我正在 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 的框架)中的错误还是内存泄漏?我不明白为什么我的应用程序在使用如此少的内存时被杀死...
感谢您的帮助。
最佳答案
几乎可以肯定,您使用的内存比 Allocations 向您显示的要多。
从您的快照来看,在我看来您没有使用 VM Tracker 工具。选择 VM Tracker 的“自动快照”选项,然后检查“脏”和“驻留”大小。
这将使您更“全面”地了解您的应用程序内存使用情况。它不会帮助您解决分配问题(如果有的话),但至少可以解释为什么会出现内存警告。
关于什么是“脏”和“常驻”内存的精彩解释,look at this from S.O.
关于iphone - 为什么 launchd 会杀死我的应用程序,它只使用 2 MB 的 RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7079031/