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

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

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

最新版

Android LeakCanary(檢測內(nèi)存泄漏插件)下載
  • 軟件大小:6.80 MB
  • 軟件語言:中文
  • 軟件類型:國產(chǎn)軟件 / 編程輔助
  • 軟件授權: 免費軟件
  • 更新時間:2017-06-01 10:17:34
  • 軟件等級:4星
  • 軟件廠商: -
  • 應用平臺:WinAll, WinXP, Win7
  • 軟件官網(wǎng):

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

點贊 好評 0%(0) 差評 差評 0%(0)

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

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

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

Android LeakCanary介紹

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

leakcanary內(nèi)容

你被概率性的 OOM 困擾么?

有時候,OOM 像幽靈一樣,揮之不去,可真想把它揪出來時,又捉之不著。

或許,是時候用 LeakCanary 來診斷一下了。

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

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

LeakCanary 就是用來干這個事情的。

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

logcat 上也會有相應的 log 通知你。

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

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

但是如果有一系列對這個對象的引用,那么在我們期待這個對象生命周期結束的時候被收回的時候,它是不會被回收的。

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

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

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

但是,如果有一個后臺線程持有這個 activity 的引用,那么 activity 對應的內(nèi)存就不能被回收。這最終將會導致內(nèi)存耗盡,然后因為 OOM 而 crash。

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

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

以下幾個關鍵步驟:

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

2.重現(xiàn)問題。為了重現(xiàn)問題,機型非常重要,因為一些問題只在特定的設備上會出現(xiàn)。

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

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

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

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

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

5.計算這個對象到 GC roots 的最短強引用路徑。

6.確定引用路徑中的哪個引用是不該有的,然后修復問題。

很復雜對吧?

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

LeakCanary

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

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

先看一個例子:

leakcanary

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

leakcanary

當發(fā)現(xiàn)有內(nèi)存泄露的時候,你會看到一個很漂亮的 leak trace 報告:

GC ROOT static Docker.container

references Box.hiddenCat

leaks Cat instance

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

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

然后你會在通知欄看到這樣很漂亮的一個界面:

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

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

leakcanary工作機制

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

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

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

4.在另外一個進程中的 HeapAnalyzerService 有一個 HeapAnalyzer 使用HAHA 解析這個文件。

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

6.HeapAnalyzer 計算 到 GC roots 的最短強引用路徑,并確定是否是泄露。如果是的話,建立導致泄露的引用鏈。

7.引用鏈傳遞到 APP 進程中的 DisplayLeakService, 并以通知的形式展示出來。

結論

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

結果是驚艷的,我們減少了 94% 的由 OOM 導致的 crash。

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

更多>> 軟件截圖

推薦應用

    其他版本下載

      精品推薦 Android Studio插件

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

      相關文章

      下載地址

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

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

      發(fā)表評論

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

      查看所有 0條 評論>>

      更多>> 猜你喜歡