1

enter image description here 나는 안드로이드 프로젝트에서 메모리 사용을 분석하기 위해 이클립스 MAT를 사용하고있다.이클립스에서 MAT를 사용하고 메모리 누수 해결

난 .. 내에서 onCreate()에서

try { 
      Debug.dumpHprofData("/mnt/sdcard/myapp.hprof"); 
      Log.i("","Calle d dumpHprofData"); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 

을 사용 myapp.hprof 파일을 생성했다. 그런 다음 "hprof-conv myapp.hprof mat.hprof"를 사용하여 mat.hprof로 변환

이클립스를 사용하여 "mat.hprof"를 열었습니다. 거대한 누수가 나타납니다.

나는 누출을 해결하고 해결하는 방법을 모르는 것이 아닙니다.

예는 :

7,321 instances of "java.lang.String", loaded by "<system class loader>" occupy 457,648 (23.06%) bytes. 

Keywords 
java.lang.String 

나는 MAT 사용과 관련된 소스 파일을 열 수 없습니다입니다.

도와주세요.

감사
스 네하

+0

문자열 및 클래스 인스턴스가 모두 있다는 사실은 누설의 증거가 아닙니다. –

답변

2

당신은 HPROF 파일을 변환하면 ... MAT 도구 ... 파일에서 파일을 열어보십시오 -> 열기 힙 덤프 -> 검색하고 원하는 파일을 선택합니다.

이제 히스토그램보기를 클릭하고 상단에 활동 이름을 입력하십시오. 얕은 힙과 유지 된 힙을 볼 수 있습니다.

개체가 1이어야합니다. 1보다 큰 경우 실제 refereces를 확인하십시오.

클래스 이름을 마우스 오른쪽 버튼으로 클릭하고 Path to GC roots -> weak reference를 제외를 선택하십시오.

희망이 도움이됩니다.

+0

메모리 누수 해결에 "약한 참조 제외"도움말이 있습니까? – Smitha

+0

MAT 도구를 사용하면 누출을 식별하는 데 도움이됩니다. 누출은 해결되지 않습니다. 코드를 게시 할 수 있다면 누출을 더 쉽게 발견 할 수 있습니다. – Prem

+0

코드를 게시 할 수 없습니다. 너무 커. 누출 의심 스크린 샷으로 업데이트합니다. – Smitha