2011-05-21 61 views
22

我只是想知道如何在android中使用內存分析工具。請告訴我如何做到這一點,以瞭解特定項目的內存泄漏。有人可以給我這個步驟明智的程序。android中的內存分析工具?

回答

23
  1. 在Eclipse打開DDMS透視。
  2. 選擇設備選項卡。
  3. 選擇您想要轉儲的進程。
  4. 點擊轉儲HPROF文件按鈕。假設安裝了MAT,將創建轉儲並打開MAT窗口。
  5. 選擇泄漏嫌疑人在嚮導窗口中報告並單擊完成

就是這樣。你會列出可能的泄漏清單,但其中有些是誤報。我建議您運行一個想要多次檢查泄漏的活動,然後再次運行MAT。

+1

謝謝,讓我檢查一下......其實我想知道特定項目或活動的內存泄漏如何加載特定項目的內存泄漏 – Taruni 2011-05-21 09:57:54

+0

3.選擇要進行轉儲的進程對於......這裏的過程是什麼......我沒有得到 – Taruni 2011-05-21 10:02:18

+0

我希望你沒有數千次泄漏,所以找到特定對象的所有泄漏並不是那麼困難。但我不認爲MAT有這樣的功能來搜索某些對象的泄漏。它只是搜索所有可能的泄漏。 – Michael 2011-05-21 20:38:06

4
+0

謝謝你,讓我看看 – Taruni 2011-05-21 09:56:02

+0

其實我想知道特定項目或活動的內存泄漏如何加載特定項目的內存泄漏 – Taruni 2011-05-21 09:59:17

+0

而使用DDMS模式我得到以下錯誤::: hprof :無法打開/sdcard/profileit.ImageDemo.hprof-hptemp:權限被拒絕。 – Taruni 2011-05-21 10:07:24

1

當您還沒有使用android.permission.WRITE_EXTERNAL_STORAGE時,寫入hprof失敗。當你在設備測試的特殊情況,請檢查您的SD卡連接只負責模式,否則你不會有SD卡寫入訪問

+0

謝謝我會檢查出來 – Taruni 2011-06-16 10:33:30

0
  • 安裝MAT

  • 轉到工具>的Android - > Android設備監視器(DDMS)

  • 在頂部左側下設備,選擇項目名稱和 點擊更新堆

  • 然後點擊轉儲HPROF文件並保存在桌面。

  • 然後運行命令提示符並指出Android-sdk目錄。

    舉例: hprof-conv位於E目錄。因此運行 命令爲cd android/sdk/platform-tools

  • 然後最後運行這個命令,通過引用這個doc來轉換這個文件格式在MAT中讀取它。

    E:\ Android的\ SDK \平臺工具>hprof-conv "C:\Users\Steve\Desktop\yourfilename.hprof" "C:\Users\Steve\Desktop\leakage.hprof"

  • 現在,你的文件將轉換爲leakage.hprof.check此文件,並在 MAT打開它。

編輯:點擊細節,那麼它會顯示類names.In是Left Click -> Path To GC Roots ->With all references。那麼它顯示的類名。

-2

請更新至Android Studio版本1.41.5。 在這個版本中,android已經支持被稱爲Analyzer Task的新工具 避免內存泄漏非常有用。

0

我建議看看Leak Canary。它本身不是內存分析儀,而是更多的檢漏儀。只需使用你的應用程序,打開和關閉活動,讓圖書館做它的工作。它甚至會告訴你發生泄漏的位置。泄漏分析儀在泄漏發生後需要一段時間才能完成工作 - 通常需要大約2分鐘或更長時間才能找到泄漏源。