android內存泄露工具
Ⅰ android手機測試中如何查看內存泄露
如何查看內存泄露
主要有2種方法
藉助工具,查看。
藉助adb 命令來查看。
【主要原理】
藉助工具來查看泄露的原因。
詳細實現方式
【工具查看】
常用工具有很多例如:
1.功能強大PC端檢測工具,如MemoryAnalyzer運行在PC端抓取Android手機中的mp文件進行深度分析。
2.小而優的Android端檢測工具,如LeakCanary隨App一起安裝會在Android手機桌面安裝的內存泄露檢測App
詳細的介紹網路裡面非常多這邊不做過多的介紹。
3.還有一種,要求不高的可以通過android studio查看內存變化等
詳細看到界面,視圖等佔用的內存情況。
【最後】
2種方法相互使用,驗證內存泄露原因。
Ⅱ 如何在Android Studio中使用LeakCanary檢測內存泄露
內存泄露檢測是項目性能優化不可避免的問題,只有解決內存泄露問題才能從根本上解決OOM。在Eclipse中提供Mat工具來檢測內存泄露,但是使用較為麻煩,界面也不是很直觀。對於有耐心,有想法的,也是可以嘗試了解一下。知道Leak的出現,為內存泄露檢測帶來了福音。
1.什麼是LeakCanary
LeakCanary
A memory leak detection library for Android and Java.
LeakCanary是一個Android和Java的內存檢測庫。
2.LeakCanary如何展示內存泄露信息
如果項目存在內存泄露,就會在狀態欄或是一個單獨的Leaks程序中顯示內存泄露信息,提供一個造成內存泄露對象的引用路徑
【錯誤2】:但是有的人沒有相應的圖標,怎麼辦?
因為gradle設置錯誤的原因,上述build分別設置了debugCompile 和 releaseCompile,具體的區別這里不細說了,需要有一定的gradle功底,才能改修完成。這里給出的最簡易的方案,適用於該產品在加入的leakCancy僅僅在測試的時候使用,而在release包中手動去除相應的代碼:【解決當前問題,但是不提倡】
1、debug 和 release 引用相同的lib
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
}
2、使用compile 不再1區分debug 和 release12
dependencies {
compile 'com.squareup.leakcanary:leakcanary-android:1.5'
}
如果存在內存泄露,將會顯示內存泄露的對象的引用路徑。
Ⅲ 使用android MAT查看內存泄露問題,我查看了很多資料,為什麼在DDMS中沒有.hprof文件
如何用MAT來分析,前提是Android開發和測試的工具安裝完整,SDK,Eclipse:
1.打開Eclipse
2.選擇 Help->Install New Software;
3.在Work with中添加站點:http://download.eclipse.org/mat/1.0/update-site/(這個地址可能會變化,但是新的地址可以在官方網站上找到:http://www.eclipse.org/mat/downloads.php )
4.生成.hprof文件:插入SD卡(Android機器很多程序都需要插入SD卡),並將設備連接到PC,在Eclipse中的DDMS中選擇要測試的進程,然後點擊Update Heap 和Dump HPROF file兩個Button。
.hprof 文件會自動保存在SD卡上,把 .hprof 文件拷貝到PC上的\ android-sdk-windows\tools目錄下。這個由DDMS生成的文件不能直接在MAT打開,需要轉換。
運行cmd打開命令行,cd到\ android-sdk-windows\tools所在目錄,並輸入命令hprof-conv xxxxx.hprof yyyyy.hprof,其中xxxxx.hprof為原始文件,yyyyy.hprof為轉換過後的文件。轉換過後的文件自動放在android-sdk-windows\tools 目錄下。
OK,到此為止,.hprof文件處理完畢,可以用來分析內存泄露情況了。
5.打開MAT:
在Eclipse中點擊Windows->Open Perspective->Other->Memory Analysis
6.導入.hprof文件
在MAT中點擊 File->Open File,瀏覽到剛剛轉換而得到的.hprof文件,並Cancel掉自動生成報告,點擊Dominator Tree,並按Package分組,選擇自己所定義的Package 類點右鍵,在彈出菜單中選擇List objects->With incoming references。
這時會列出所有可疑類,右鍵點擊某一項,並選擇Path to GC Roots->exclude weak/soft references,會進一步篩選出跟程序相關的所有有內存泄露的類。據此,可以追蹤到代碼中的某一個產生泄露的類。
Ⅳ 如何快速定位android app是否存在內存泄露
確定是否存在內存泄露及具體是哪個程序造成,首先需要關注的是內存泄露已彈出out of memory對話框的情況。這種情況下,直接通過對話框即可得知是哪個應用的問題,然後再進一步分析該應用是否因內存泄露而導致了out of memory對話框的彈出。可以通過閱讀相關文檔如《如何診斷Android應用中的內存泄露》中介紹的各種方法進行分析,確定是否有內存泄露以及具體是哪個進程造成的內存泄露。
生成hprof文件並使用MAT進行分析是另一種有效的手段。生成hprof文件可以通過在DDMS中選中進程並點擊窗口左上角的mp hprof file按鈕直接生成,或者通過在程序中添加特定代碼來生成。推薦使用代碼生成hprof,然後使用《Android內存泄露利器(hprof篇)》中的工具自動提取多個hprof文件,然後使用MAT進行比較分析。在MAT中導入.hprof文件後,MAT會自動解析並生成報告,通過點擊Dominator Tree,並按照Package進行分組,選擇自己定義的Package類,比較各個類在不同時期的RetainedHeap,找出可疑類。然後選擇該類,右鍵點擊,選擇show retained Set項,查看Retained Heap的詳細信息,進一步找出嫌疑項。
在代碼中查找內存泄露的具體原因,根據在MAT找到的內存泄露信息,可以參照《Android內存泄漏簡介》進一步在代碼中查找內存泄露的原因並進行修復。如果代碼相對簡單,也可以直接根據《Android內存泄漏簡介》中的內容,在代碼中查找內存泄露的原因並解決。
Ⅳ Android開發中,有哪些好方法可以檢測內存泄露和性能
下面是回答的內容
內存泄露,是Android開發者最頭疼的事。可能一處小小的內存泄露,都可能是毀於千里之堤的蟻穴。怎麼才能檢測內存泄露呢?網上教程非常多,不過很多都是使用Eclipse檢測的, 其實1.3版本以後的Android Studio 檢測內存非常方便, 如果結合上MAT工具,LeakCanary插件,一切就變得so easy了。
熟悉Android Studio界面工欲善其事,必先利其器。
我們接下來先來熟悉下Android Studio的界面
結果
非獨占時間:某函數佔用的CPU時間,包含內部調用其它函數的CPU時間。
獨占時間:某函數佔用CPU時間,但不含內部調用其它函數所佔用的CPU時間。
我們如何判斷可能有問題的方法?
通過方法的調用次數和獨占時間來查看,通常判斷方法是:
如果方法調用次數不多,但每次調用卻需要花費很長的時間的函數,可能會有問題。
如果自身佔用時間不長,但調用卻非常頻繁的函數也可能會有問題。
綜述
上面給大家介紹了若干使用Android Studio檢查程序性能的工具,工具永遠是輔助,不要因為工具耽誤太長時間。如果有問題,歡迎大家糾正。