iphone - 为什么 launchd 会杀死我的应用程序,它只使用 2 MB 的 RAM?

标签 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

最佳答案

几乎可以肯定,您使用的内存比 Allocations 向您显示的要多。

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

这将使您更“全面”地了解您的应用程序内存使用情况。它不会帮助您解决分配问题(如果有的话),但至少可以解释为什么会出现内存警告。

关于什么是“脏”和“常驻”内存的精彩解释,look at this from S.O.

关于iphone - 为什么 launchd 会杀死我的应用程序,它只使用 2 MB 的 RAM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7079031/

相关文章:

objective-c - 为什么 View 在自定义缩放和翻转动画后绘制在任务栏下方?

ios - MarqueeLabel 不工作,它只是在屏幕上显示为 UILabel

ios - 从 Braintree ios SDK 中删除邮政编码

ios - -all_load 和 -ObjC 之间的区别

ios - Storyboard 中的内容溢出

ios - swift 中的 Apple CareKit 症状代码不会将数据保存到 CareStore

ios - swift 将搜索栏添加到导航栏

ios - Segues 与 UIViewControllerAnimatedTransitioning

ios - 实例和初始化的区别

ios - 等待 UITextView 完成更新文本 (iOS 7.1)