2010-09-15 367 views
17

我是這個Android平臺的新手。在一個應用程序中,存在內存泄漏。但是我無法找到內存泄漏在哪個活動或類中發生。如何在Android中查找內存泄漏類/活動

我正在使用MAT來獲取內存泄漏存在或不存在的信息。但無法找到哪個活動正在泄漏。

請告訴我如何找到哪個活動正在泄漏。

謝謝。

+0

可能重複:http://stackoverflow.com/questions/2851483/tracing-the-memory-window-leaks-in-android – Praveen 2010-09-15 05:44:07

+0

這文章將告訴你如何:http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html – 2011-11-19 01:35:37

回答

2

我不能評論上一篇文章,但重要的是要認識到你絕對應該擔心內存管理,特別是在Android移動平臺的資源限制環境中。欲瞭解更多關於這一點,點擊這裏:

http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html

+0

避免只能讓你到目前爲止。有時候,這是一個第三方庫,它會跳出你的代碼。 – 2011-11-19 01:33:18

0

你可以看到它在DDMS。

只需選擇您的應用程序包名稱,然後單擊更新堆上述按鈕。

現在轉到Heap Tab點擊原因GC。

您可以找到所用對象的列表。

5

我還沒有發現Android上的平臺跟蹤內存泄漏的最好的職位是:

http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

,第一部分是過時的,因爲它現在已集成到Eclipse但大部分職位是偉大的!

+0

您鏈接的文章是我在Android中檢測到內存泄漏時遇到的最有幫助的文章。百萬的榮譽。 – 2011-11-19 01:34:31

33

即使這個問題安靜老了。我認爲帶圖片的小教程可能會有所幫助。所以首先你需要安裝MAT plugin。重新啓動後點擊轉儲文件HPROF

Device controls

一段時間(約30秒)後,你會得到一個對話框,您可以點擊完成。比你得到這樣的觀點:

Dump result

在那裏,你點擊左側的最大組成部分,過濾器與引出參照。然後,你在這裏得到這樣的觀點:

在這裏你可以看到,我錯過了刪除我的ContentManager項目,其中幾個項目分別存放在我的未決HashMap

4

使用LeakCanary - Android和Java的內存泄漏檢測庫。 在調試版本中檢測到活動內存泄漏時,LeakCanary將自動顯示通知。安裝這個庫非常簡單。

https://github.com/square/leakcanary

通知例如:

enter image description here