1

ここに画像の説明を入力Android プロジェクトのメモリ使用量を分析するために、Eclipse の MAT を使用しています。

利用した

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

私の onCreate().. で myapp.hprof ファイルを生成します。次に、「hprof-conv myapp.hprof mat.hprof」を使用して mat.hprof に変換します。

Eclipse を使用して「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 で開くことができません。

助けてください。

ありがとう
_

4

2 に答える 2

2

hprofファイルを変換したら...MATツールからファイルを開いてみてください...[ファイル]->[ヒープダンプを開く]->ファイルを参照して選択します。

次に、ヒストグラムビューをクリックし、上部にアクティビティの名前を入力します。浅いヒープと保持されたヒープを確認できます。

オブジェクトは1である必要があります。1より大きい場合は、ライブ参照を確認してください。

クラス名を右クリック->[GCルートへのパス]->[弱参照を除外]を選択します。

お役に立てれば。

于 2012-05-18T09:22:49.000 に答える
0

Google I/O 2011: Android アプリのメモリ管理をご覧ください。メモリ リークの最も一般的な原因、MAT の使用法と実際の例など、すべてがここでカバーされています。

また、Android アプリケーションのメモリ分析には、MAT の使用方法が説明されており、他の有用な資料へのリンクがあります。

最後に、Investigating Your RAM Usageでは、メモリ リークがある場合に (典型的に) トリガーする方法について説明します。

于 2014-10-14T21:09:33.040 に答える