9
由于看起来内存不足或内存损坏的情况,我们的应用程序在外地偶尔发生崩溃(通过BugSense发现),所以为了帮助我追踪它们,我启用了以下功能:GuardMalloc导致虚拟内存耗尽
- malloc的自由曲线
- malloc的警卫边线
- 员的malloc
- Objective-C的对象僵尸
- malloc的堆栈测井
- 记录异常。
与应用程序在模拟器(小于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
随着卫队的malloc禁用应用程序工作正常,但与它启用应用程序崩溃与这些消息。当我使用Leaks and Allocations工具进行剖析时,没有发现任何泄漏,并且所有内存范围的实时字节值都在30 MB到80 MB之间(取决于当时正在进行的操作)。当然,这对应用程序来说不是太多内存。
但是,消息指向我的应用程序使用太多的内存,但我不确定导致虚拟内存耗尽的是什么。 Xcode中是否有其他工具或调试器设置可用于帮助?
感谢,
大卫
NSZombies会导致任何你自由的东西不能真正被释放,因此如果你做了大量的分配就会耗尽内存。 – user1118321
禁用僵尸解决了这个问题。谢谢。 –
嗨,同样的问题在那里,并修复禁用僵尸..谢谢。但我没有得到它的影响,你能解释我吗? – Nikunj