Android記憶體泄露利器MLT(整合篇)

來源:互聯網
上載者:User

本人網易部落格原文:http://hubingforever.blog.163.com/blog/static/171040579201243071752744/

一、前言MemoryLeakTool是Robin Hu編寫的一款用於監測Android進程記憶體使用量情況的指令碼工具,簡稱為MLT。主要功能:1、用於測試一個或多個進程是否有記憶體泄露。2、用於自動提取一個Hprof檔案,並轉化為MAT所能識別的格式,以便分析。 該功能需要在你的程式的代碼中先產生Hprof檔案 Android2.3平台目前的版本:1001 Android4.03平台當前最新版本:1011曆史版本:1001(Android4.03平台)二、運行環境運行平台:Window依賴軟體1:安裝JDK,且將其bin目錄加入到環境變數path中。依賴軟體2:安裝android-sdk4.0,且將其platform-tools目錄加入到環境變數path中。三、配置參數把MLT解壓到你的電腦上,用記事本開啟其中的config.bat檔案進行參數配置。批處理設定檔config.bat如下:rem the following var is for getProcessState.batset rawDatadir=rawDataset processName=android.process.acore;com.android.systemuirem set processShortName=a;b;cset processShortName=set outRoot=outset statFilePrefix=statrem the following var is for getHprof.batset tools=D:\SDK\android-sdk4.0\toolsset hpInputFileDir=/sdcardset hpInputFile=input.hprofset hpRoot=hpTemp注1:rawDatadir為“ps -x”提取出來的檔案的目錄注2:processName需要統計記憶體的進程名字,可以同時統計多個,進程名之間用“;”進行分割。注3:processShortName需要統計RSS的進程的名字的縮寫形式,如果不坐設定或設定為空白,這程式會根據processName自動產生。注4:outRoot為對進程的RSS進行統計最後的組建檔案的存放目錄。注5:statFilePrefix為對進程的RSS進行統計最後的組建檔案的首碼。注6:tools為hprof-conv.exe所在的目錄。注7:hpInputFileDir為手機中我們產生的hprof檔案所在的目錄。注8:hpInputFileDir為手機中我們產生的hprof檔案的名字。四、進程PSS記憶體統計PSS (Proportional Set Size)是指進程實際使用的實體記憶體(比例分配共用庫佔用的記憶體)。PSS指標對於研發人員來說比較有用,對於測試人員請使用RSS指標,關於如何統計進程RSS的請參考後文。確保手機串連電腦,確保手機已經開啟debug模式, 然後雙擊runMemoryPicker.bat彈出介面, 

 介面中的interval time表示的是好久提取一次進程的記憶體資訊 點擊按鈕開始記憶體統計, 在手機上進行一些反覆操作後, 如果你想查看這些操作是否造成了config.bat中指定的進程是否有記憶體泄露。 請開啟MLT目錄下的out目錄,裡面已經產生了一些關於進程的記憶體取樣值檔案。 比如:stat_Memory_android.process.acore.txt;stat_Memory_com.android.systemui.txt開啟stat_Memory_android.process.acore.txt檔案你會看到一些數值序列:NativeSize:13172,13172,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232,13232DalvikSize:11015,11015,11143,11271,11335,11399,11527,11591,11655,11655,11655,11655,11655,11655,11655,11655,11655,11655,11655,11655NativeAllocated:13158,13159,13202,13202,13202,13203,13203,13205,4711,4732,4783,4770,4773,4781,4768,4770,4770,4770,4922,4923DalvikAllocated:10775,10859,11038,11122,11206,11290,11374,11482,9898,10029,10229,10310,10405,10554,10651,10731,10811,10892,10338,10419NativePSS:5189,5189,5249,5249,5249,5249,5249,5249,3701,3705,3713,3713,3713,3713,3713,3713,3713,3713,3808,3808DalvikPSS:2894,2982,3167,3255,3347,3431,3519,3631,3175,3187,3195,3199,3203,3223,3231,3239,3243,3251,3312,3312TotalPSS:20958,20993,21239,21326,21418,21502,21590,21702,9255,9276,9284,9288,9294,9317,9325,9333,9337,9345,9559,9559我們首先需要關心的是TotalPSS,把TotalPSS裡面的數值序列拷貝,用這些數值序列在excel中組建圖表,  

 

查看其函數曲線最後是否穩定,如果不穩定,就說明可能存在記憶體泄露。另外,下次重新對某個進程經常記憶體統計請在out目錄中請先將老的統計檔案刪除。五、進程RSS記憶體統計RSS(Resident Set Size)表示的是進程實際使用實體記憶體大小(包含共用庫佔用的記憶體)RSS指標對於測試人員來說比較有用,對於研發人員最好使用PSS指標,關於如何統計進程PSS的請參考前文。確保手機串連電腦,確保手機已經開啟debug模式, 然後雙擊runProcessStatePicker.bat彈出介面, 

 

介面中的interval time表示的是好久提取一次進程的記憶體資訊 點擊按鈕開始記憶體統計, 在手機上進行一些反覆操作後, 如果你想查看這些操作是否造成了config.bat中指定的進程是否有記憶體泄露。 請開啟MLT目錄下的out目錄,裡面已經產生了一些關於進程的記憶體取樣值檔案。 比如:stat_android.process.acore.txt;stat_com.android.systemui.txt開啟stat_android.process.acore.txt檔案你會看到一些數值序列:RssSize:56892,56892,56892,56892,56892,56892,56892,56892,56892,56892,56892,56924,56916,56916,56916,56916,56916,56916,56916,56916,56952,56980,56976,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56688,56692,56712,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56732,56736,56844,40400,40392,40392把RssSize裡面的數值序列拷貝,用這些數值序列在excel中組建圖表,  

 

查看其函數曲線最後是否穩定,如果不穩定,就說明可能存在記憶體泄露。另外,下次重新對某個進程經常記憶體統計請在out目錄中請先將老的統計檔案刪除。六、提取hprof檔案關於此的詳細內容請參考《 Android記憶體泄露利器(hprof篇)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.