调试本地内存使用

Address Sanitizer

Android 平台开发者使用 AddressSanitizer (ASan) 在 C/C++ 中查找内存错误。

自 Android 8.0 (Oreo) 开始,您可以使用 ASan 在未取得 root 权限的正式版设备上对应用进行调试。您可以在 ASan wiki 上找到相关说明。

Malloc 调试

有关本地内存问题可用调试选项的完整说明,请参阅 Malloc 调试使用 libc 回调跟踪本地内存

Malloc 统计信息

Android 支持 mallinfo(3)malloc_info(3) 扩展到 <malloc.h>malloc_info 函数可在 Android 6.0 及更高版本中使用,其 XML 架构记录在 Bionic 的 <malloc.h> 中。

Dalvik 调试监控服务器

您还可以使用 Dalvik 调试监控服务器 (DDMS) 获取“Malloc 调试”输出的图形视图。

要使用 DDMS,请先打开其本机内存界面:

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

重新启动 DDMS 并选择一个进程后,您可以切换到新的本地分配选项卡,并使用分配列表进行填充。这对于调试内存泄漏尤为有用。