Monkey總結(五)

Monkey總結(五)

    Monkey是一個快速檢查內存泄露的好工具,可以初步發現較明顯的內存泄露問題。

   什麼是內存泄露?是指不在使用的對象持續佔有內存,造成內存空間的浪費。

   檢查內存泄露的基本操作步驟:

         1.運行Monkey或者固定自動化用例

            adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50

                  2.監控內存值,如果出現過大等遞增異常則保存HPROF文件

                            查看應用內存的命令:adb shell dumpsys meminfo(進程名) 

                            以下爲一個bat腳本,主要 是記錄第一行的和最後一行總共的內存,一直循環查詢:

                            set process=cn.microinvestment.weitou

                            @adb sehll dumpsys meminfo %process% | findstr "Pss"

                             :m

                             @adb sehll dumpsys meminfo %process% | findstr "TOTAL"

                             @ping -n 5 127.1>nul

                              @goto m

                             運行後,如圖:

                             如果發現內存過大,則保存HPROF文件:

                                 adb shell am dumpheap <進程名> <保存路徑>

                   3.但是生成的HPROF文件怎麼查看呢?我們要用到一個工具MAT來查看,但是首先還要這個HPROF文件轉換成MAT可讀的文件,在Android SDK tool裏面有個hprof-conv命令:

                                hprof-conv<原HPROF文件路徑><轉換後的HPROF路徑>

                   4.用MAT工具打開轉換後的HPROF文件:

                               MAT下載:http://www.eclipse.org/mat/

                               安裝好JDK,配置好環境後打開MAT工具,選擇File-Open File...,,再選擇剛轉換後的文件。

                                  一般來說會選擇第一個,Leak Suspects Report

                                     會看到report的概覽:

           再下面是問題列表: 

                                               我們可以通過SQL語句來查詢對象有沒有被釋放掉,如果有多個相同的對象,則會存在內存泄露的問題。              

                                                    在SQL查詢框裏輸入:select * frominstanceof android.app.Activity,然後點擊右上角的黑色感嘆號按鈕。

                                                    如果出現多個相同的對象,則存在內存泄露。

發佈了25 篇原創文章 · 獲贊 17 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章