为什么启动杀死我的应用程序,只在RAM中使用2 MB?

时间:2011-08-16 13:36:09

标签: iphone ios cocoa-touch memory-management

我正在iPod touch上开发一款应用程序,它使用相机,显示预览并拍照(所有这些都通过AVCaptureSession)。 我不明白的是,我的应用程序有时会在内存警告后被launchd杀死...虽然它在RAM中使用不超过2 MB(参见附件截图)。 控制台告诉我

Aug 16 15:16:35 Wiggler[109] <Warning>: Received memory warning. Level=1
...
Aug 16 15:16:58 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.tMyCompany.Wiggler[0xd83d]) Exited: Killed: 9

另一方面,我可以成功运行其他使用大量RAM(超过100 MB)的应用程序,而不会发生任何崩溃或内存警告。

我的应用有什么问题?我错过了什么?它是AVFoundation中的错误还是内存泄漏(提供AVCaptureSessions的框架)?我无法理解为什么我的应用程序在使用如此少的内存时被杀死了......

感谢您的帮助。

instruments screenshot

2 个答案:

答案 0 :(得分:4)

你几乎肯定会使用更多内存来分配Allocations。

在您的快照中,我认为您没有使用VM Tracker工具。选择VM Tracker的“自动快照”选项,然后检查“脏”和“常驻”大小。

这将为您提供有关应用内存使用情况的更“全局”视图。无论如何,它无法帮助你解决分配问题,但至少它可以解释为什么内存警告会进入。

对于“脏”和“常驻”记忆的优秀解释,look at this from S.O.

答案 1 :(得分:0)

尝试为较小的捕获配置AVCaptureSession,并查看它对脏内存使用的影响。 GC无法收集正在使用的内存(作为捕获或预览等的一部分)