생활의 참조를 찾을 수 있습니다.메모리 누수를 추적하는 방법 - UI가 활동 서비스를 시작하고 두 통신 할 수 있도록 최대 2 개 방법 AIDL 콜백을 설정</p> <p>- 나는 상당히 복잡한 응용 프로그램을
서비스는 영원히 계속 실행됩니다 (UI 활동에서 '끄기'버튼 제외).
문제는 사용자가 활동을 종료 할 때 활동 메모리가 해제되지 않는 것입니다. - UI 활동이 종료 된 경우에도 내 앱에서 사용하는 메모리 양이 동일합니다. - UI 활동이 닫힌 경우에도 여전히 힙에 mapTiles 및 기타 UI가 표시됩니다.
내 생각 엔 어떻게 든 서비스에 활동에 대한 참조가 있습니다. Activity Context 누설에 대한 경고 많은 기사를 알고 있습니다. 서비스는 응용 프로그램 범위에 저장된 약한 참조를 통해서만 활동을 참조합니다. (응용 프로그램을 확장하는 클래스)
구체적으로 활동을 참조하는 것이 무엇인지 찾는 방법이 있습니까? dominator 트리는 내 모든 메모리를 먹는 mapTiles 및 ListView 레이아웃을 보여줍니다 ...하지만 그 물건을 살아있게 유지하는 활동에 대한 참조를 찾을 수 없습니다.
또한 OutOfMemoryException이 발생하면 은 HPROF 힙 덤프를 덤프하는 방법이 있습니까? 사용자가 활동을 종료 할 때
메뉴 -> 응용 프로그램 -> 실행중인 서비스. com.myapp의 크기가 15MB임을 보여줍니다. 나는 Activity (back arrow)를 종료하고 전화로 조금 돌아 다니는 것을 생각했을 것이다. Activity는 쓰레기를 모으고 숫자는 떨어질 것이다. 그것은 결코하지 않습니다. – paulpooch
해당 화면은 서비스에만 해당됩니다. 귀하의 활동이 서비스를 시작하고 있으며 그 서비스는 귀하가 그 15MB의 메모리를 사용하여보고있는 것입니다. 이 서비스는 활동을 종료해도 중단되지 않습니다. 필요에 따라 OS에서 처리되도록 처리됩니다. 나는 현재 예를 들어 48 시간 이상 계속 된 서비스를 가지고있다 ... 마지막으로 내 전화를 재부팅했다. 서비스 코드 내에서 원하는대로이 서비스를 중지/시작할 수 있습니다. – user432209
Ok - 화면이 서비스 클래스에만 해당된다는 것을 알면 좋습니다. 작업 관리자가 있습니까? 활동이 얼마나 많은 RAM을 사용하고 있는지 어떻게 알 수 있습니까? – paulpooch