Android中的Serializable、Parcelable">Android中的Serializable、Parcelable
2141
2025-04-03
文章目錄
一、 內存泄漏排查 ( 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
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。