調試本機內存使用

地址消毒劑:HWASan/ASan

Android平台的開發者使用HWAddressSanitizer (花山)找到C / C內存錯誤++。

可以從Flash預建花山圖像支持的圖像設備ci.android.com詳細的安裝說明)。

從 Android 8.0 (Oreo) 開始,還可以使用 ASan 來調試非 root 生產設備上的應用程序。你可以找到上的說明ASAN維基

赫普羅夫德

Android 10 支持 heapprofd,一種低開銷的採樣堆分析器。 heapprofd 允許您將本機內存使用歸因於程序中的調用堆棧。見heapprofd -安卓堆分析器普菲文檔的網站了解更多信息。

Malloc調試

malloc的調試本機內存使用跟踪libc的回調為用於本機內存問題的調試選項的完整描述。

libmemunreachable

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

Malloc 鉤子

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

Malloc 統計

Android支持的mallinfo(3)malloc_info(3)擴展<malloc.h> 。該malloc_info功能是在的Android 6.0(棉花糖)可用的和更高及其XML模式在仿生的記載<malloc.h>

Dalvik 調試監控服務器

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

要使用 DDMS,首先要打開它的原生內存 UI:

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

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