android 如何分析应用的内存(十一)
接下来是,heap的第五大板块——ASan(Address Sanitizer)和HWASan(Hardware Address Sanitizer)。可以将其称为:地址清理器
与其说是Heap板块,不如说是debug板块。
ASan是一个集成在编译器中的工具,因此只需要在编译的时候设置好Flag即可。而HWASan则可以认为是ASan的plus版本。HWASan比ASan有如下的优点:
- 更小的内存开销
- 还可以检测,返回之后的堆栈使用情况
注意:自2023年起,ASan不再支持,建议使用HWASan。
本文章先简单介绍一下原理,然后详细介绍ASan的使用,以及对输出结果的解析。在下一篇中介绍HWASan的使用
原理简述
ASan在编译和链接阶段,将一些特殊的检查代码和内存管理代码插入到程序中。当程序运行时,这些插入的代码将负责管理内存的分配和释放。
比如:当应用程序调用malloc时,实际上调用的是Asan提供的malloc版本。ASan版本的malloc除了基本的内存分配以外,还会做额外的动作如&#