內(nèi)存泄露,,是Android開發(fā)者最頭疼的事,??赡芤惶幮⌒〉膬?nèi)存泄露,,都可能是毀于千里之堤的蟻穴。
熟悉Android Studio界面工欲善其事,必先利其器,。我們接下來先來熟悉下Android Studio的界面 一般分析內(nèi)存泄露, 首先運(yùn)行程序,打開日志控制臺(tái),有一個(gè)標(biāo)簽Memory ,我們可以在這個(gè)界面分析當(dāng)前程序使用的內(nèi)存情況, 一目了然, 我們?cè)僖膊恍枰嗫嗟脑趌ogcat中尋找內(nèi)存的日志了,。 圖中藍(lán)色區(qū)域,就是程序使用的內(nèi)存,, 灰色區(qū)域就是空閑內(nèi)存,,
我們?cè)趺礄z測(cè)內(nèi)存泄露呢首先需要明白一個(gè)概念, 內(nèi)存泄露就是指,本應(yīng)該回收的內(nèi)存,還駐留在內(nèi)存中,。
dump成功后會(huì)自動(dòng)打開 hprof文件,文件以Snapshot+時(shí)間來命名 通過Android Studio自帶的界面,查看內(nèi)存泄露還不是很智能,我們可以借助第三方工具,常見的工具就是MAT了,下載地址 http:///mat/downloads.php ,這里我們需要下載獨(dú)立版的MAT. 下圖是MAT一開始打開的界面, 這里需要提醒大家的是,,MAT并不會(huì)準(zhǔn)確地告訴我們哪里發(fā)生了內(nèi)存泄漏,,而是會(huì)提供一大堆的數(shù)據(jù)和線索,我們需要自己去分析這些數(shù)據(jù)來去判斷到底是不是真的發(fā)生了內(nèi)存泄漏,。 接下來我們需要用MAT打開內(nèi)存分析的文件, 上文給大家介紹了使用Android Studio生成了 hprof文件, 這個(gè)文件在呢, 在Android Studio中的Captrues這個(gè)目錄中,可以找到 注意,這個(gè)文件不能直接交給MAT, MAT是不識(shí)別的, 我們需要右鍵點(diǎn)擊這個(gè)文件,轉(zhuǎn)換成MAT識(shí)別的,。 然后用MAT打開導(dǎo)出的hprof(File->Open heap dump) MAT會(huì)幫我們分析內(nèi)存泄露的原因 LeakCanary上面介紹了MAT檢測(cè)內(nèi)存泄露, 再給大家介紹LeakCanary。
LeakCanary會(huì)檢測(cè)應(yīng)用的內(nèi)存回收情況,,如果發(fā)現(xiàn)有垃圾對(duì)象沒有被回收,,就會(huì)去分析當(dāng)前的內(nèi)存快照,也就是上邊MAT用到的.hprof文件,,找到對(duì)象的引用鏈,,并顯示在頁(yè)面上。這款插件的好處就是,可以在手機(jī)端直接查看內(nèi)存泄露的地方,可以輔助我們檢測(cè)內(nèi)存泄露 使用:
在應(yīng)用的Application onCreate方法中添加LeakCanary.install(this),,如下
應(yīng)用運(yùn)行起來后,LeakCanary會(huì)自動(dòng)去分析當(dāng)前的內(nèi)存狀態(tài),,如果檢測(cè)到泄漏會(huì)發(fā)送到通知欄,,點(diǎn)擊通知欄就可以跳轉(zhuǎn)到具體的泄漏分析頁(yè)面。
追蹤內(nèi)存分配如果我們想了解內(nèi)存分配更詳細(xì)的情況,可以使用Allocation Traker來查看內(nèi)存到底被什么占用了,。
點(diǎn)一下是追蹤,, 再點(diǎn)一下是停止追蹤, 停止追蹤后 .alloc文件會(huì)自動(dòng)打開,打開后界面如下: 當(dāng)你想查看某個(gè)方法的源碼時(shí),右鍵選擇的方法,點(diǎn)擊Jump to source就可以了 查詢方法執(zhí)行的時(shí)間Android Studio 功能越來越強(qiáng)大了, 我們可以借助AS觀測(cè)各種性能,如下圖: 如果我們要觀測(cè)方法執(zhí)行的時(shí)間,就需要來到CPU界面 點(diǎn)擊Start Method Tracking, 一段時(shí)間后再點(diǎn)擊一次, trace文件被自動(dòng)打開, 非獨(dú)占時(shí)間: 某函數(shù)占用的CPU時(shí)間,包含內(nèi)部調(diào)用其它函數(shù)的CPU時(shí)間,。
我們?nèi)绾闻袛嗫赡苡袉栴}的方法?通過方法的調(diào)用次數(shù)和獨(dú)占時(shí)間來查看,,通常判斷方法是:
綜述上面給大家介紹了若干使用Android Studio檢查程序性能的工具,工具永遠(yuǎn)是輔助,不要因?yàn)楣ぞ叩⒄`太長(zhǎng)時(shí)間,。如果有問題,,歡迎大家糾正。 |
|