使用VM Tracker工具,我发现我的iOS应用程序上的虚拟内存使用量不断增长。正在增长的分配没有出现在常规的分配工具中,我想知道识别它们的来源的过程是什么。正在增长的类别是VM_ALLOCATE。
我在vm_allocate上放了一个符号断点,以捕获我看到的在仪器中泄漏的特定大小的分配(使用寄存器$ r2作为size参数)。但是,我只在应用程序的整个生命周期中看到一些4k分配(来自调试NSLog调用),并且没有在仪器中报告的1+ MB分配。
我正在使用的方法是在工具中VM_ALLOCATE下报告的所有分配中断正确的方法吗?还有什么想法我可以尝试确定不断增长的分配的来源吗?
答案 0 :(得分:0)
在mach_vm_map上放置一个符号断点。这会让你更多,但也许不是全部。
另见http://www.opensource.apple.com/source/Libc/Libc-825.40.1/gen/magazine_malloc.c
另一种可能性是,仪器中显示的紧邻VM分配合并为单个块。换句话说,仪器显示为单个大型分配实际上可能由许多相邻的小分配组成。不过,我还没有证实这一点。