因内存压力而终止

时间:2013-11-23 08:19:04

标签: ios iphone objective-c memory instruments

当我的应用程序在iPhone上的后台运行超过2小时时,我遇到了问题,然后在Xcode中经常出现错误“终止内存压力”。我可以做什么,我的应用程序在后台运行没有问题?这是仪器的截图: Screenshot

1 个答案:

答案 0 :(得分:13)

简单地说,这很可能不是你的错。 iOS低内存杀手(Jetsam名称的一个相当激进的内核线程)使用“优先级带”来维持候选进程在低内存中杀死,并且几乎每个人都是候选者 - 后台进程比前景进程更有可能。 Priority bands in Jetsam, from newosxobook.com/articles/MemoryPressure.html。 (图片来自Jetsam的优先乐队,来自http://newosxbook.com/articles/MemoryPressure.html

你可以做的是通过响应低内存事件(即实现didReceiveLowMemoryWarning)并卸载任何你不是严格要求的图像/ UIImageViews来获得更多的喘息空间 - 即使你做了一点,它也有帮助你活了下来此外,您没有指出您正在使用哪个UIBackgroundMode - 这可能会有所帮助(它在内核中定义应用程序配置文件,从而稍微调整Jetsam)。