【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )
文章目錄
- 一、 內存泄漏排查 ( Android Profiler 工具 )
- 二、 Android Profiler 內存監測相關功能
- 三、內存快照分析
內存泄漏原理 : 長生命周期對象 , 持有短生命周期對象的引用 , 并且是強引用持有 , GC 無法釋放該短生命周期對象引用 , 造成 OOM ;
Android Profiler 工具參考官方文檔 : 使用 Memory Profiler 查看 Java 堆和內存分配
一、 內存泄漏排查 ( Android Profiler 工具 )
1. 內存泄漏排查 : 開發過程中 , 應該每隔一段時間都要檢查下內存情況 , 連上手機 , 從 Android Studio 中安裝應用到手機中 , 打開 Android Profiler 工具 , 查看 MEMORY 一欄 , 每個界面 , 每個功能都使用一下 , 查看內存使用情況 ;
2. Android Profiler 工具使用前提 : 只有從當前 Android Studio 中通過 adb 工具安裝運行的應用 , 才能再 Android Studio 底部顯示 Android Profile 選項卡 , 才能在 Android Profiler 工具 中查看 ;
3. 打開 Android Profiler 面板 : 應用通過 adb 安裝運行后 , 界面如下圖所示 , 此時還沒有添加要監控的進程 ;
選擇監控進程 : 點擊 SESSIONS 面板的加號按鈕 , 選擇對應手機運行的可監控進程 ;
也可以點擊運行按鈕右側的 Profile ‘app’ 按鈕 , 進入如下界面 , 前提是該應用時通過 Android Studio 安裝的 ;
此時就可以監控該應用的內存情況了 ;
點擊上圖中的 Memory 區域 , 紅框框起來的區域 , 即可進入如下內存監控界面 ;
二、 Android Profiler 內存監測相關功能
請求執行 GC 垃圾回收操作 ( 重要功能能 ) : 垃圾桶按鈕 , 強制執行 GC 操作 ( Force garbage collection ) , 也可以使用 Ctrl + G 快捷鍵 ;
保存快照 ( 重要功能能 ) : 保存一份當前 Java 內存快照 ( Dump Java Heap ) , 保存某個時刻的內存運行情況 ;
時間縮放 : 右側的加號 , 減號 , 用于縮放時間 ;
三、內存快照分析
1. 保存內存快照 : 查看內存泄漏 , 首先強制 GC 回收一下內存 , 然后 Dump 一份內存快照 ;
上圖中的內存快照中 , 反射了當前運行的所有內存對象 ;
2. 選擇根據包查看對象 : 在類排列選項中 , 選擇 “Arrange by package” 選項 , 這樣就可以比較有條理的查找內存中有哪些對象 ;
3 . Heap Dum 內存信息 : 打開我們自己寫的代碼 , 在下面的 Heap Dum 信息面板中 , 查看如下內容 ;
① Allocations : 對象個數 , 一般情況下一個對象只有一個 , 如果出現多個 , 就要考慮是否有內存泄漏問題 ;
② Shallow Size : 對象占用內存大小 ;
③ Retained Set : 對象引用組的內存 ;
4. 保存內存快照 : 在點擊 Dump Java Heap 按鈕后 , 會保存一份內存快照 , 被保存的起始時間和結束時間之間會變成灰色 , 右鍵點擊灰色部分 , 選擇 “Export” , 即可將本內存快照保存到文件中 ;
在彈出的界面中保存到桌面即可 ;
5. 自動檢測 Activity / Fragment 的內存泄漏 : 選中 Activity / Fragment Leaks 復選框 , 該工具會自動分析 Activity / Fragment 的內存泄漏問題 ;
Activity 中沒有內存泄漏 ;
參考官方文檔 : 使用 Memory Profiler 查看 Java 堆和內存分配
總結
以上是生活随笔為你收集整理的【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存 | 内存快照 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 内存优化】Java 引
- 下一篇: 【Android 内存优化】使用 Mem