DDMS工具检测内存泄露
生活随笔
收集整理的這篇文章主要介紹了
DDMS工具检测内存泄露
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DDMS工具檢測內存泄露
DDMS是Android開發包中自帶工具,可以測試app性能,用于發現內存問題。
1、環境搭建
準備環境,網上隨便都能找到,不再敘述了;
2、工具啟動
虛擬機測試:
確保測試環境中已經配置了Android虛擬機,cmd下輸入如下命令啟動:
a、首先通過android list avd 查看建好的虛擬設備;
b、通過命令emulator @{name}啟動虛擬機;
c、虛擬機啟動成功后輸入ddms啟動測試工具;
聯機測試:
如果不使用虛擬機測試的話,可以聯機進行測試,需要下載Android驅動,或者使用豌豆莢也可以,安裝程序也比較方便,連接前需要將手機設置成USB調試模式,cmd下可以使用adb shell命令測試連接是否成功。
連接成功后,輸入ddms可以成功啟動工具。
工具左側會顯示已經運行的進程;如果想查看某個進程的運行log,可以點擊左下角綠色加號Add a new logcat filter,輸入filter name和PID。
如果聯機測試,你可能會發現手機里已經運行的被測程序,但是DDMS左側的列表中沒有顯示被測程序的進程,那么別猶豫了,不是工具的問題,也不是手機配置的問題,直接讓開發人員在APK中的AndroidManifest.xml文件中加上android:debuggable="true">重新打包。
3、測試應用
左側列表選中被測進程,點擊左上角Show heap updates,點擊VM heap視圖中Cause GC按鈕,手動執行內存回收操作,會顯示當前進程的內存使用詳細情況。
其中data object是數據對象,data object total size是進程中所有數據對象的內存總量,這個值大小決定了是否有內存泄露。
在手機上不斷操作被測應用,觀察data object的total size的值,total size通常會穩定在一個范圍,不斷操作應用的過程中,系統會不斷生成數據對象,在不斷GC過程中,這些對象會被回收,total size會回落到某個特定范圍。
如果應用存在內存泄露情況,data object的total size在每次GC后的值都會比前一次GC后的值要大,反復測試過程中,total size會成明顯上升的趨勢。由此就可以確定被測應用有內存泄露跡象。
4、MAT問題定位
發現內存問題之后,需要將heap內存信息導出來進行問題定位;點擊DDMS左上角Dump HPROF file,選擇位置保存;
導出來的文件需要進行格式轉換才能使用MAT打開進行分析,cmd命令運行:
./hprof-conv a.hprof b.hprof
a.hprof為到出文件的名成,b.hprof為轉換后的名稱。
使用MAT打開b.hprof進行分析,具體分析方法下篇文章介紹
總結
以上是生活随笔為你收集整理的DDMS工具检测内存泄露的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03--CSS布局设置
- 下一篇: mysql主从配置常见问题_mysql