0
Eclipse에서 재생중인 Android 슬라이드 쇼 앱을 디버깅하고 있습니다. 메모리 누수의 원인을 찾기 위해 힙 덤프를 생성하려하지만 hprof 파일은 "/ data/data/app folder /"안드로이드 장치에서 생성됩니다. 다음은 파일을 생성하는 코드입니다. 그게 뭐가 잘못 됐니? 미리 감사드립니다!hprof 파일이 Android 응용 프로그램에서 생성되지 않았습니다.
public class HeapDumpingUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
private static final String HPROF_DUMP_BASENAME = "leak-app-";
private final String dataDir;
public HeapDumpingUncaughtExceptionHandler(String dataDir) {
this.dataDir = dataDir;
Date d = new Date();
CharSequence s = DateFormat.format("yyyy-MM-dd_HH-mm-ss", d.getTime());
String absPath = new File(dataDir, HPROF_DUMP_BASENAME +s+".hprof").getAbsolutePath();
try {
Log.d(this.getClass().toString(),"memory leak app handler: initial heap dump created "+ absPath);
Debug.dumpHprofData(absPath);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Date d = new Date();
CharSequence s = DateFormat.format("yyyy-MM-dd_HH-mm-ss", d.getTime());
String absPath = new File(dataDir, HPROF_DUMP_BASENAME+s+".hprof").getAbsolutePath();
Log.d(this.getClass().toString(),"memory leak app handler: exception caught : "+ex.getClass()+ " heap dump path "+absPath);
try {
Debug.dumpHprofData(absPath);
} catch (IOException e) {
e.printStackTrace();
}
ex.printStackTrace();
}
}
메모리 누수 식별에 대한 도움을 받으려면 https://github.com/square/leakcanary를 시도해야합니다. 하나가 발생하면 라이브러리는 hprof 파일을 생성하지만, 대부분의 경우 누출 된 정확한 라인을 읽는 것만으로 문제를 찾을 수 있습니다. BTW UncaughtHandler 여기에 일처럼 사용자 정의 확장 된 응용 프로그램 클래스에 추가해야합니다. http://stackoverflow.com/a/8943671/2910520 – MatPag
감사하지만 당신도 그것을 봤 거든 이클립스에서 설치하는 방법을 얻을 수 없습니다. 이클립스에 대한 튜토리얼은 거의 없다. – Anndexi9
Android Studio로 전환하는 것이 좋습니다. 많은 새로운 자습서는 AS를 기반으로합니다 ... 확실히 가치가 있습니다. – MatPag