Android LeakCanary(檢測內存泄漏插件)
最新版- 軟件大小:6.80 MB
- 軟件語言:中文
- 軟件類型:國產軟件 / 編程輔助
- 軟件授權: 免費軟件
- 更新時間:2017-06-01 10:17:34
- 軟件等級:
- 軟件廠商: -
- 應用平臺:WinAll, WinXP, Win7
- 軟件官網: 暫無
相關軟件
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
軟件介紹人氣軟件精品推薦相關文章網友評論下載地址
Android LeakCanary是一個用于用來檢測Android下內存泄漏的插件,它能幫助攻城獅在開發(fā)階段直觀快捷的檢查出內存泄露的錯誤和漏洞,有需要的就來IT貓撲下載吧!
Android LeakCanary介紹
LeakCanary 是一個開源的在debug版本中檢測內存泄漏的java庫,能夠幫助攻城獅進行檢測內存泄漏的插件。
leakcanary內容
你被概率性的 OOM 困擾么?
有時候,OOM 像幽靈一樣,揮之不去,可真想把它揪出來時,又捉之不著。
或許,是時候用 LeakCanary 來診斷一下了。
它是一個用來檢查 Android 下內存泄漏的開源庫,這篇文章主要介紹其用法、架構和其背后的實現(xiàn)原理。
如果有一個工具能自動完成這些事情,甚至在發(fā)生 OOM 之前,就把內存泄漏報告給你,那是多么美好的一件事情啊。
LeakCanary 就是用來干這個事情的。
在測試你的 App 時,如果發(fā)生了內存泄漏,狀態(tài)欄上會有通知告訴你。
logcat 上也會有相應的 log 通知你。
什么是內存泄露
一些對象有著有限的生命周期。當這些對象所要做的事情完成了,我們希望他們會被回收掉。
但是如果有一系列對這個對象的引用,那么在我們期待這個對象生命周期結束的時候被收回的時候,它是不會被回收的。
它還會占用內存,這就造成了內存泄露。
持續(xù)累加,內存很快被耗盡。
比如,當 Activity.onDestroy 被調用之后,activity 以及它涉及到的 view 和相關的 bitmap 都應該被回收。
但是,如果有一個后臺線程持有這個 activity 的引用,那么 activity 對應的內存就不能被回收。這最終將會導致內存耗盡,然后因為 OOM 而 crash。
對戰(zhàn)內存泄露
排查內存泄露是一個全手工的過程,這在 Raizlabs 的 Wrangling Dalvik 系列文章中有詳細描述。
以下幾個關鍵步驟:
1.通過 Bugsnag, Crashlytics 或者 Developer Console 等統(tǒng)計平臺,了解 OutOfMemoryError 情況。
2.重現(xiàn)問題。為了重現(xiàn)問題,機型非常重要,因為一些問題只在特定的設備上會出現(xiàn)。
為了找到特定的機型,你需要想盡一切辦法,你可能需要去買,去借,甚至去偷。
當然,為了確定復現(xiàn)步驟,你需要一遍一遍地去嘗試。
一切都是非常原始和粗暴的。
3.在發(fā)生內存泄露的時候,把內存 Dump 出來。
4.然后,你需要在 MAT 或者 YourKit 之類的內存分析工具中反復查看,找到那些原本該被回收掉的對象。
5.計算這個對象到 GC roots 的最短強引用路徑。
6.確定引用路徑中的哪個引用是不該有的,然后修復問題。
很復雜對吧?
如果有一個類庫能在發(fā)生 OOM 之前把這些事情全部都搞定,然后你只要修復這些問題就好了,豈不妙哉!
LeakCanary
LeakCanary 是一個檢測內存泄露的開源類庫。
你可以在 debug 包種輕松檢測內存泄露。
先看一個例子:
創(chuàng)建一個RefWatcher,監(jiān)控對象引用情況。
當發(fā)現(xiàn)有內存泄露的時候,你會看到一個很漂亮的 leak trace 報告:
GC ROOT static Docker.container
references Box.hiddenCat
leaks Cat instance
我們知道,你很忙,每天都有一大堆需求。所以我們把這個事情弄得很簡單,你只需要添加一行代碼就行了。然后 LeakCanary 就會自動偵測 activity 的內存泄露了。
然后你會在通知欄看到這樣很漂亮的一個界面:
這樣,就萬事俱備了! 在 debug build 中,如果檢測到某個 activity 有內存泄露,LeakCanary 就是自動地顯示一個通知。
leakcanary工作機制
1.RefWatcher.watch() 創(chuàng)建一個 KeyedWeakReference 到要被監(jiān)控的對象。
2.然后在后臺線程檢查引用是否被清除,如果沒有,調用GC。
3.如果引用還是未被清除,把 heap 內存 dump 到 APP 對應的文件系統(tǒng)中的一個 .hprof 文件中。
4.在另外一個進程中的 HeapAnalyzerService 有一個 HeapAnalyzer 使用HAHA 解析這個文件。
5.得益于唯一的 reference key, HeapAnalyzer 找到 KeyedWeakReference,定位內存泄露。
6.HeapAnalyzer 計算 到 GC roots 的最短強引用路徑,并確定是否是泄露。如果是的話,建立導致泄露的引用鏈。
7.引用鏈傳遞到 APP 進程中的 DisplayLeakService, 并以通知的形式展示出來。
結論
使用 LeakCanary 之后,我們修復了我們 APP 中相當多的內存泄露。我們甚至發(fā)現(xiàn)了 Android SDK 中的一些內存泄露問題。
結果是驚艷的,我們減少了 94% 的由 OOM 導致的 crash。
如果你也想消滅 OOM crash,那還猶豫什么,趕快使用 LeakCanary
更多>> 軟件截圖
推薦應用
其他版本下載
精品推薦 Android Studio插件
- 更多 (30個) >> Android Studio插件 Android Studio是谷歌設計的一個功能全面的安卓開發(fā)環(huán)境,裝備了為各種安卓設備開應用程序(app)開發(fā)所需要的功能。Android Studio的代碼提示和搜索功能既強大又智能,顏色、圖片等內容在布局和代碼中可以實時預覽。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(檢測內存泄漏插件) 最新版
查看所有評論>> 網友評論
更多>> 猜你喜歡