Android LeakCanary(檢測內(nèi)存泄漏插件)
最新版- 軟件大小:6.80 MB
- 軟件語言:中文
- 軟件類型:國產(chǎn)軟件 / 編程輔助
- 軟件授權: 免費軟件
- 更新時間:2017-06-01 10:17:34
- 軟件等級:
- 軟件廠商: -
- 應用平臺:WinAll, WinXP, Win7
- 軟件官網(wǎng): 暫無
相關軟件
android studio prettify插件v0.31 官方版
35.00 KB/中文/10.0
小小島嶼官方版v0.11 安卓版
74.62 MB/中文/10.0
星芒效果PS濾鏡StarFilter Prov2020.2.06 漢化免費版
6.02 MB/中文/10.0
sketchup pro 2017插件合集644款
619.10 MB/中文/6.0
android studio 3.0最新版金絲雀版
669.00 MB/中文/10.0
軟件介紹人氣軟件精品推薦相關文章網(wǎng)友評論下載地址
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)存泄露。
先看一個例子:
創(chuàng)建一個RefWatcher,監(jiān)控對象引用情況。
當發(fā)現(xiàn)有內(nèi)存泄露的時候,你會看到一個很漂亮的 leak trace 報告:
GC ROOT static Docker.container
references Box.hiddenCat
leaks Cat instance
我們知道,你很忙,每天都有一大堆需求。所以我們把這個事情弄得很簡單,你只需要添加一行代碼就行了。然后 LeakCanary 就會自動偵測 activity 的內(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插件
- 更多 (30個) >> Android Studio插件 Android Studio是谷歌設計的一個功能全面的安卓開發(fā)環(huán)境,裝備了為各種安卓設備開應用程序(app)開發(fā)所需要的功能。Android Studio的代碼提示和搜索功能既強大又智能,顏色、圖片等內(nèi)容在布局和代碼中可以實時預覽。Android Studio可以拓展支持第三方插
Android Studio 2.2.2中文正式版 1.60 GB
/中文/10.0android studio應用開發(fā)實戰(zhàn)詳解 pdf 0 Bytes
/中文/3.0Android Studio 3.4中文補丁 83.25 MB
/中文/5.0idea插件gsonformat.jar 1.74 MB
/中文/0.0Android Studio for mac 440.00 MB
/中文/10.0Android Studio中文版(支持win10) 293.00 MB
/中文/10.0android studio中文包 13.50 MB
/中文/5.0gitignore插件 511.00 KB
/中文/10.0
相關文章
下載地址
Android LeakCanary(檢測內(nèi)存泄漏插件) 最新版
查看所有評論>> 網(wǎng)友評論
更多>> 猜你喜歡