Я отлаживаю приложение для слайд-шоу Android в eclipse. Я пытаюсь создать кучу дампа, чтобы найти источник утечки памяти, но hprof-файл не создается в папке «/ data/data/app folder /» Android-устройства, которое я тестирую. Ниже приведен мой код для генерации файлов. Что в этом плохого? Заранее спасибо!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
Спасибо, но я не могу получить, как установить его в eclipse, даже если я его поймал. Почти нет учебника для затмения. – Anndexi9
Я предлагаю вам перейти на Android Studio, многие из новых руководств основаны на AS ... это стоит того. – MatPag