進行我們的可用性調查以改進此站點。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

調試本機內存使用

地址消毒劑:HWASan / ASan

Android平台開發人員使用HWAddressSanitizer (HWASan)查找C / C ++中的內存錯誤。

您可以從ci.android.com將預構建的HWASan圖像閃存到受支持的Pixel設備(詳細的安裝說明)。

從Android 8.0(Oreo)開始,還可以使用ASan在非根目錄生產設備上調試應用程序。您可以在ASan Wiki上找到說明。

Heapprofd

Android 10支持heapprofd,這是一種開銷較低的採樣堆分析器。 heapprofd允許您將本機內存使用情況歸因於程序中的調用堆棧。有關更多信息,請參見Perfetto文檔站點上的heapprofd-Android Heap Profiler

Malloc調試

有關可用於本機內存問題的調試選項的完整說明,請參見使用libc回調的Malloc調試和本機內存跟踪

libmemunreachable

Android的libmemunreachable是零開銷的本機內存洩漏檢測器。它對所有本機內存使用了不精確的標記清除清除垃圾收集器,將所有無法訪問的塊報告為洩漏。有關使用說明,請參見libmemunreachable文檔

Malloc掛鉤

如果您想構建自己的工具,Android的libc還支持攔截程序執行期間發生的所有分配/免費調用。有關用法說明,請參見malloc_hooks文檔

Malloc統計

Android支持對<malloc.h>mallinfo(3)malloc_info(3)擴展。 malloc_info函數在Android 6.0(棉花糖)及更高版本中可用,其XML模式記錄在Bionic的<malloc.h>

Dalvik調試監控服務器

您還可以使用Dalvik調試監視器服務器(DDMS)獲得Malloc調試輸出的圖形視圖。

要使用DDMS,請首先打開其本機內存UI:

  1. 打開~/.android/ddms.cfg
  2. 添加以下行: native=true

重新啟動DDMS並選擇一個進程後,您可以切換到新的本機分配選項卡,並使用分配列表填充它。這對於調試內存洩漏特別有用。