天天看點

Android 性能優化工具之 Memory Profiler

簡介

Memory Profiler 是 Android Profiler 中的一個元件,可幫助您識别可能會導緻應用卡頓、當機甚至崩潰的記憶體洩露和記憶體抖動。它顯示一個應用記憶體使用量的實時圖表,讓您可以捕獲堆轉儲、強制執行垃圾回收以及跟蹤記憶體配置設定。

官方文檔

參考:使用 Memory Profiler 檢視 Java 堆和記憶體配置設定

為什麼使用記憶體分析器

Android 提供了一個托管記憶體環境——當它确定你的應用不再使用某些對象時,垃圾收集器會将未使用的記憶體釋放回堆。在所有 Android 版本的某個點上,系統必須短暫地暫停代碼。大多數時候,停頓是不可察覺的。但是,如果你的應用程式配置設定記憶體的速度快于系統收集的速度,你的應用程式可能會被延遲,而收集器釋放了足夠的記憶體來滿足你的配置設定。延遲可能會導緻應用程式跳過幀并導緻明顯的慢速。

即使你的應用程式沒有表現出緩慢,如果它洩露了記憶體,它仍然可以保留那個記憶體,即使它在背景。通過強制不必要的垃圾收集事件,這種行為可以降低系統記憶體性能的其他部分。最終,系統不得不殺死你的應用程式來回收記憶體。然後當使用者傳回到你的應用程式時,它必須重新啟動。

為了幫助防止這些問題,您應該使用記憶體分析器來執行以下操作:

在可能導緻性能問題的時間軸中尋找不良的記憶體配置設定模式

Dump Java 堆,以便在任何時間檢視哪些對象正在使用記憶體。長時間的堆轉儲可以幫助識别記憶體洩漏。

在正常和極端的使用者互動過程中記錄記憶體配置設定,以精确地确定您的代碼在短時間内配置設定的對象或配置設定被洩漏的對象。

有關可以減少應用程式記憶體使用的程式設計實踐的資訊,請參閱管理應用程式的記憶體。

記憶體分析器概述

Android 性能優化工具之 Memory Profiler
  1. 用于強制執行垃圾回收事件的按鈕。
  2. 用于捕獲堆轉儲的按鈕。

    注意:隻有在連接配接到搭載 Android 7.1(API 級别 25)或更低版本的裝置時,才會在堆轉儲按鈕右側顯示用于記錄記憶體配置設定的按鈕。

  3. 用于指定分析器多久捕獲一次記憶體配置設定的下拉菜單。選擇适當的選項可幫助您在分析時提高應用性能。
  4. 用于縮放時間軸的按鈕。
  5. 用于跳轉到實時記憶體資料的按鈕。
  6. 事件時間軸,顯示活動狀态、使用者輸入事件和螢幕旋轉事件。
  7. 記憶體使用量時間軸,它會顯示以下内容:
  • 一個堆疊圖表,顯示每個記憶體類别目前使用多少記憶體,如左側的 y 軸以及頂部的彩色鍵所示。
  • 一條虛線,表示配置設定的對象數,如右側的 y 軸所示。
  • 每個垃圾回收事件的圖示。