leakcanary下載 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)編程開發(fā)編程輔助 → Android LeakCanary(檢測(cè)內(nèi)存泄漏插件) 最新版

Android LeakCanary(檢測(cè)內(nèi)存泄漏插件)

最新版

Android LeakCanary(檢測(cè)內(nèi)存泄漏插件)下載
  • 軟件大?。?span itemprop="fileSize">6.80 MB
  • 軟件語(yǔ)言:中文
  • 軟件類型:國(guó)產(chǎn)軟件 / 編程輔助
  • 軟件授權(quán): 免費(fèi)軟件
  • 更新時(shí)間:2017-06-01 10:17:34
  • 軟件等級(jí):4星
  • 軟件廠商: -
  • 應(yīng)用平臺(tái):WinAll, WinXP, Win7
  • 軟件官網(wǎng):

ITMOP本地下載文件大?。?.80 MB

點(diǎn)贊 好評(píng) 0%(0) 差評(píng) 差評(píng) 0%(0)

軟件介紹人氣軟件精品推薦相關(guān)文章網(wǎng)友評(píng)論下載地址

小編為您推薦: AndroidLeakCanary AndroidStudio插件 AndroidStudio

Android LeakCanary是一個(gè)用于用來(lái)檢測(cè)Android下內(nèi)存泄漏的插件,它能幫助攻城獅在開發(fā)階段直觀快捷的檢查出內(nèi)存泄露的錯(cuò)誤和漏洞,有需要的就來(lái)IT貓撲下載吧!

Android LeakCanary介紹

LeakCanary 是一個(gè)開源的在debug版本中檢測(cè)內(nèi)存泄漏的java庫(kù),能夠幫助攻城獅進(jìn)行檢測(cè)內(nèi)存泄漏的插件。

leakcanary內(nèi)容

你被概率性的 OOM 困擾么?

有時(shí)候,OOM 像幽靈一樣,揮之不去,可真想把它揪出來(lái)時(shí),又捉之不著。

或許,是時(shí)候用 LeakCanary 來(lái)診斷一下了。

它是一個(gè)用來(lái)檢查 Android 下內(nèi)存泄漏的開源庫(kù),這篇文章主要介紹其用法、架構(gòu)和其背后的實(shí)現(xiàn)原理。

如果有一個(gè)工具能自動(dòng)完成這些事情,甚至在發(fā)生 OOM 之前,就把內(nèi)存泄漏報(bào)告給你,那是多么美好的一件事情啊。

LeakCanary 就是用來(lái)干這個(gè)事情的。

在測(cè)試你的 App 時(shí),如果發(fā)生了內(nèi)存泄漏,狀態(tài)欄上會(huì)有通知告訴你。

logcat 上也會(huì)有相應(yīng)的 log 通知你。

什么是內(nèi)存泄露

一些對(duì)象有著有限的生命周期。當(dāng)這些對(duì)象所要做的事情完成了,我們希望他們會(huì)被回收掉。

但是如果有一系列對(duì)這個(gè)對(duì)象的引用,那么在我們期待這個(gè)對(duì)象生命周期結(jié)束的時(shí)候被收回的時(shí)候,它是不會(huì)被回收的。

它還會(huì)占用內(nèi)存,這就造成了內(nèi)存泄露。

持續(xù)累加,內(nèi)存很快被耗盡。

比如,當(dāng) Activity.onDestroy 被調(diào)用之后,activity 以及它涉及到的 view 和相關(guān)的 bitmap 都應(yīng)該被回收。

但是,如果有一個(gè)后臺(tái)線程持有這個(gè) activity 的引用,那么 activity 對(duì)應(yīng)的內(nèi)存就不能被回收。這最終將會(huì)導(dǎo)致內(nèi)存耗盡,然后因?yàn)?OOM 而 crash。

對(duì)戰(zhàn)內(nèi)存泄露

排查內(nèi)存泄露是一個(gè)全手工的過(guò)程,這在 Raizlabs 的 Wrangling Dalvik 系列文章中有詳細(xì)描述。

以下幾個(gè)關(guān)鍵步驟:

1.通過(guò) Bugsnag, Crashlytics 或者 Developer Console 等統(tǒng)計(jì)平臺(tái),了解 OutOfMemoryError 情況。

2.重現(xiàn)問(wèn)題。為了重現(xiàn)問(wèn)題,機(jī)型非常重要,因?yàn)橐恍﹩?wèn)題只在特定的設(shè)備上會(huì)出現(xiàn)。

為了找到特定的機(jī)型,你需要想盡一切辦法,你可能需要去買,去借,甚至去偷。

當(dāng)然,為了確定復(fù)現(xiàn)步驟,你需要一遍一遍地去嘗試。

一切都是非常原始和粗暴的。

3.在發(fā)生內(nèi)存泄露的時(shí)候,把內(nèi)存 Dump 出來(lái)。

4.然后,你需要在 MAT 或者 YourKit 之類的內(nèi)存分析工具中反復(fù)查看,找到那些原本該被回收掉的對(duì)象。

5.計(jì)算這個(gè)對(duì)象到 GC roots 的最短強(qiáng)引用路徑。

6.確定引用路徑中的哪個(gè)引用是不該有的,然后修復(fù)問(wèn)題。

很復(fù)雜對(duì)吧?

如果有一個(gè)類庫(kù)能在發(fā)生 OOM 之前把這些事情全部都搞定,然后你只要修復(fù)這些問(wèn)題就好了,豈不妙哉!

LeakCanary

LeakCanary 是一個(gè)檢測(cè)內(nèi)存泄露的開源類庫(kù)。

你可以在 debug 包種輕松檢測(cè)內(nèi)存泄露。

先看一個(gè)例子:

leakcanary

創(chuàng)建一個(gè)RefWatcher,監(jiān)控對(duì)象引用情況。

leakcanary

當(dāng)發(fā)現(xiàn)有內(nèi)存泄露的時(shí)候,你會(huì)看到一個(gè)很漂亮的 leak trace 報(bào)告:

GC ROOT static Docker.container

references Box.hiddenCat

leaks Cat instance

我們知道,你很忙,每天都有一大堆需求。所以我們把這個(gè)事情弄得很簡(jiǎn)單,你只需要添加一行代碼就行了。然后 LeakCanary 就會(huì)自動(dòng)偵測(cè) activity 的內(nèi)存泄露了。

Android LeakCanary(檢測(cè)內(nèi)存泄漏插件)

然后你會(huì)在通知欄看到這樣很漂亮的一個(gè)界面:

Android LeakCanary(檢測(cè)內(nèi)存泄漏插件)

這樣,就萬(wàn)事俱備了! 在 debug build 中,如果檢測(cè)到某個(gè) activity 有內(nèi)存泄露,LeakCanary 就是自動(dòng)地顯示一個(gè)通知。

leakcanary工作機(jī)制

1.RefWatcher.watch() 創(chuàng)建一個(gè) KeyedWeakReference 到要被監(jiān)控的對(duì)象。

2.然后在后臺(tái)線程檢查引用是否被清除,如果沒有,調(diào)用GC。

3.如果引用還是未被清除,把 heap 內(nèi)存 dump 到 APP 對(duì)應(yīng)的文件系統(tǒng)中的一個(gè) .hprof 文件中。

4.在另外一個(gè)進(jìn)程中的 HeapAnalyzerService 有一個(gè) HeapAnalyzer 使用HAHA 解析這個(gè)文件。

5.得益于唯一的 reference key, HeapAnalyzer 找到 KeyedWeakReference,定位內(nèi)存泄露。

6.HeapAnalyzer 計(jì)算 到 GC roots 的最短強(qiáng)引用路徑,并確定是否是泄露。如果是的話,建立導(dǎo)致泄露的引用鏈。

7.引用鏈傳遞到 APP 進(jìn)程中的 DisplayLeakService, 并以通知的形式展示出來(lái)。

結(jié)論

使用 LeakCanary 之后,我們修復(fù)了我們 APP 中相當(dāng)多的內(nèi)存泄露。我們甚至發(fā)現(xiàn)了 Android SDK 中的一些內(nèi)存泄露問(wèn)題。

結(jié)果是驚艷的,我們減少了 94% 的由 OOM 導(dǎo)致的 crash。

如果你也想消滅 OOM crash,那還猶豫什么,趕快使用 LeakCanary

更多>> 軟件截圖

推薦應(yīng)用

    其他版本下載

      精品推薦 Android Studio插件

      Android Studio插件
      更多 (30個(gè)) >> Android Studio插件 Android Studio是谷歌設(shè)計(jì)的一個(gè)功能全面的安卓開發(fā)環(huán)境,裝備了為各種安卓設(shè)備開應(yīng)用程序(app)開發(fā)所需要的功能。Android Studio的代碼提示和搜索功能既強(qiáng)大又智能,顏色、圖片等內(nèi)容在布局和代碼中可以實(shí)時(shí)預(yù)覽。Android Studio可以拓展支持第三方插

      相關(guān)文章

      下載地址

      • Android LeakCanary(檢測(cè)內(nèi)存泄漏插件) 最新版

      查看所有評(píng)論>> 網(wǎng)友評(píng)論

      發(fā)表評(píng)論

      (您的評(píng)論需要經(jīng)過(guò)審核才能顯示) 網(wǎng)友粉絲QQ群號(hào):374962675

      查看所有 0條 評(píng)論>>

      更多>> 猜你喜歡