2017-02-08 5 views
0

Я отлаживаю приложение для слайд-шоу 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(); 
} 
} 
+1

Чтобы получить помощь по идентификации утечек памяти, попробуйте https://github.com/square/leakcanary. Когда происходит встреча, библиотека создает файл hprof, но большую часть времени вы можете найти проблему только при чтении точной строки, когда что-то просочилось. BTW вы должны добавить UncaughtHandler в пользовательский расширенный класс приложений, как это делается здесь http://stackoverflow.com/a/8943671/2910520 – MatPag

+0

Спасибо, но я не могу получить, как установить его в eclipse, даже если я его поймал. Почти нет учебника для затмения. – Anndexi9

+1

Я предлагаю вам перейти на Android Studio, многие из новых руководств основаны на AS ... это стоит того. – MatPag

ответ

0

Наконец-то выясните, что мне нужен этот код для генерации hprof, поскольку DDMS уже имеет эту функцию. Извините за беспокойство вас, ребята, и спасибо.

Смежные вопросы