GuardMalloc导致虚拟内存耗尽

时间:2012-12-22 00:41:59

标签: ios xcode memory memory-management memory-leaks

由于内存不足或内存损坏情况,我们的应用程序偶尔会遇到崩溃现象(通过BugSense发现),所以为了帮助我追踪它们,我启用了以下功能:

  • Malloc Scribble
  • Malloc Guard Edges
  • Guard Malloc
  • Objective-C Zombie Objects
  • Malloc Stack Logging
  • 记录例外情况。

在模拟器中与应用程序进行一些交互(少于30秒)后,将显示以下消息:

GuardMalloc[TrafficDemoEmp-2430]: allocate_pages(): virtual memory exhaused!
GuardMalloc[TrafficDemoEmp-2430]: expandUniquingTable(): VMCopyFailed
GuardMalloc[TrafficDemoEmp-2430]: allocate_pages(): virtual memory exhaused!
GuardMalloc[TrafficDemoEmp-2430]: expandUniquingTable(): VMCopyFailed

禁用Guard Malloc后,该应用程序运行正常,但启用该应用程序时,应用程序会崩溃。当我使用Leaks和Allocations工具进行配置文件时,没有发现泄漏,并且所有内存的实时字节值都在30 MB到80 MB之间(取决于它当时正在做什么)。当然,应用程序的内存不会太多。

然而,消息指向我的应用程序使用太多内存,但我不知道是什么导致虚拟内存耗尽。是否有其他工具或调试器设置可供Xcode使用?

谢谢,
大卫

1 个答案:

答案 0 :(得分:9)

User1118321是对的。 NSZombies是造成这个问题的原因。

提交此答案以便接受答案。