文章出處

前言:

近階段都在探索android性能測試方面的東西,其中一個很重要的指標就是內存。對于內存,主要是一些gc是不是及時,或者說一些引用有沒有及時釋放,有沒有導致oom或者內存持續增加導致卡頓,有沒有大規模的內存抖動。近期項目由于個別模塊大改,所以也就想把性能測試的東西在實際項目中實踐進去,本文就是針對實踐過程進行一下分享。

Memory Monitor:

1.1內測實時顯示監控

Memory Monitor是android studio自帶的一個非常好用的一個檢測內存變化的工具,他能實時監控針對于某個進程的內存變化,幫助我們來判斷內存是否及時釋放,以及carsh是否超出了內存閥值。當然你也可以手動進行gc,看對象是否有得到釋放。

這里是針對pris云閱讀thread所進行的實時內存監控,通過一些列側滑切換資訊正文后內存發生的變化,可以看到內存持續上升,且返回首頁后仍沒有明顯下降,那么這里的確是出現了一系列問題,是應該關注的內存的問題。

1.2dump java heap

Memory Monitor中dump java heap,能夠dump一段時間內的.hprof文件來進行對象分析,看看是什么對象占用了大量內存

1.3start allocation tracking

Memory Monitor中start allocation tracking 可以手機alloc文件,其中強大的圖標數據,反應了一些線程的具體內存占用情況,是一個很好的分析工具,在使用Memory Monitor過程中可以具體使用Allocation Tracker來對thread進行內存分析,分析哪些activity其中對象的占用內存情況。

 

LeakCanary:

LeakCanary是一個開源的內存檢測工具,下面是結合閱讀項目的具體實踐。

2.1編輯build.gradle

需要加入具體依賴

debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'

這里需要說明一下,gradle依賴需要FQ,不FQ很有可能失敗,最好用公司網絡(雖然說失敗過很多次,但還是可以成功的)或者vpn,聲明后重新構建去下載依賴

2.2編輯Application.class開啟LeakCanary

該類即androidManifest中聲明的application類(自定義的會居多,具體可以從androidManifest查看)

在復寫的oncreate()方法中加入如下代碼:

LeakCanary.install(this);

 

2.3安裝應用到手機

在安裝閱讀app的同時,會在手機中安裝一個監控app

 

2.4測試apk

此時就可以開始日常測試啦,若有內測泄漏,會有toast提示正在dump數據

打開leak app就可以看到一條具體的內測泄漏信息(這里在toast提示之后會有一定的延遲,過一會兒才會在leak app顯示)

 

這里具體定位到具體tread和activtiy,你還可以借助heap dump數據進行mat工具分析

這里的例子是引用的對象沒有釋放造成的MainGridActivity頁面的內存泄漏

2.5可share一些數據文件

這里提供share heap dump文件

 

從git的源碼可以看到,dump的.hprof文件在sdcard/Download/leakcanary目錄下,你也可以通過adb shell下進行查看,并且pull到pc端來進行分析

LeakCanary開源地址:https://github.com/square/leakcanary 

借助LeakCanary可以很好的反饋測試過程中的內存泄漏情況,以助于排查一些對象沒有及時釋放導致oom的情況。

本文為作者原創

禁止其他公眾賬號轉載


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()