1

enter image description here我正在使用MAT的eclipse來分析我的Android項目中的內存使用情況。在eclipse中使用MAT並解決內存泄漏

我已經在我的onCreate()使用

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

..而產生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它的源文件。

請幫忙。

感謝
斯納

+0

事實上,你有所有這些字符串和類實例不是泄漏的證據 –

回答

2

一旦轉換HPROF文件...嘗試從MAT工具...文件打開文件 - >打開堆轉儲 - >瀏覽並選擇您的文件。

現在點擊直方圖視圖並在頂部輸入您的活動名稱。你將能夠看到淺堆和保留堆。

對象應該是1.如果它超過1,請檢查實時參考。

右鍵單擊你的類名 - >選擇GC根的路徑 - >排除弱引用。

希望這會有所幫助。

+0

是否「排除弱引用」幫助解決內存泄漏? – Smitha

+0

MAT工具可幫助您識別泄漏。它不會解決泄漏。如果你可以發佈代碼,發現漏洞會更容易。 – Prem

+0

我無法發佈代碼..太大了。我正在更新與疑似泄漏屏幕截圖的quatsion – Smitha