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