2017-02-08 10 views
0

EclipseでAndroidスライドショーを再生することをデバッグしています。メモリリークの原因を見つけるためにヒープダンプを生成しようとしていますが、テスト中の "/ data/data/app folder /"フォルダ内にhprofファイルは生成されません。ファイルを生成するための私のコードは次のとおりです。それのどこが悪いんだい?前もって感謝します!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ファイルを作成しますが、何かが流出したときに問題を見つけることができます。あなたは、ここで行われたようなカスタム拡張アプリケーションクラスでUncaughtHandlerを追加する必要がありますhttp://stackoverflow.com/a/8943671/2910520 – MatPag

+0

ありがとうございます。でも、私はそれをEclipseでインストールする方法を知ることはできません。日食のためのチュートリアルはほとんどありません。 – Anndexi9

+1

Android Studioに切り替えることをお勧めします。多くの新しいチュートリアルはASに基づいています...それは確かに価値があります。 – MatPag

答えて

0

最後に、私焦げ茶色のRELIは、DDMSは既にこの機能を持っているとのhprof生成するには、このコードが必要見つけます。皆さんを邪魔して申し訳ありません。ありがとうございます。

関連する問題