我正在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的框架)?我无法理解为什么我的应用程序在使用如此少的内存时被杀死了......
感谢您的帮助。
答案 0 :(得分:4)
你几乎肯定会使用更多内存来分配Allocations。
在您的快照中,我认为您没有使用VM Tracker工具。选择VM Tracker的“自动快照”选项,然后检查“脏”和“常驻”大小。
这将为您提供有关应用内存使用情况的更“全局”视图。无论如何,它无法帮助你解决分配问题,但至少它可以解释为什么内存警告会进入。
对于“脏”和“常驻”记忆的优秀解释,look at this from S.O.
答案 1 :(得分:0)
尝试为较小的捕获配置AVCaptureSession,并查看它对脏内存使用的影响。 GC无法收集正在使用的内存(作为捕获或预览等的一部分)