日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android?配合Mat工具監聽查找內存泄漏的操作方法_Android

作者:一只想顛覆世界的螞蟻 ? 更新時間: 2022-07-07 編程語言

1、Android Studio Profiler查看內存

內部培訓做個記錄

運行我們的項目,然后一直玩APP。最后在Android Studio Profiler中選擇memory。執行如下操作:

會得到如下圖示。

從圖中可以看出,目前存在47個泄漏情況。點擊數字47 會得到app heap內存泄漏的詳細類。

某一個類泄漏了17次。

右鍵到處hprof文件。

2、hprof文件轉換

進入到Android SDK的platform-tools目錄下 執行如下命令

hprof-conv memory.hprof 11.hprof

3、MAT定位泄漏原因

打開mat軟件,選擇file 導入剛剛生成的11.hprof文件

點擊

輸入你需要查看的泄漏類的正則

這兒我輸入activity。找到我們自己的activity,這個時候右鍵該類。選擇Gc roots 然后exclude all phantom/weak/soft etc.references(這步操作的目的是排除軟弱虛引用,因為我們知道內存泄漏的問題都是由強引用導致的)

從圖中可以看出 我們項目有個lifecycleRegister類持有了activity保存在fragmentCallback中,而得不到釋放。

4、回到代碼排查原因

最后在代碼中我看到我們的fragmentCallback一直保存數據,但是沒有地方釋放,在釋放的位置activity.finish()即可。至此解決問題

即堆中存在不再使用的對象,但垃圾收集器無法將它們從內存中刪除

原文鏈接:https://blog.csdn.net/qq_33023933/article/details/124703757

欄目分類
最近更新