【问题标题】:Terminated due memory pressure因内存压力而终止
【发布时间】:2013-12-08 05:42:06
【问题描述】:

当我的应用在我的 iPhone 上后台运行超过 2 小时时,我遇到了问题,然后在 Xcode 中经常出现错误“由于内存压力而终止”。我该怎么做才能让我的应用程序在后台运行而没有问题?这是仪器的屏幕截图:

【问题讨论】:

  • 使用配置文件查看正在发生的事情并修复/停止它。没有关于应用程序的具体细节,没有具体建议......
  • @Wain 你的个人资料是什么意思?
  • “我该怎么做才能让我的应用在后台运行而没有问题?”:使用更少的内存。
  • @CouchDeveloper 3.11 MB 很多吗?
  • 另一个原因是,“由于内存压力而终止”对于后台进程来说是正常。系统需要 RAM,它决定终止您的应用程序 - 无论出于何种原因。好吧,可能会有其他应用程序出现在前台并鲁莽地要求大量内存。这些“以自我为中心”的应用程序,也可能是你的应用程序被杀死的原因。 ;)

标签: ios iphone objective-c memory instruments


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,但您的链接已损坏。
  • “一点”是多少?仅释放一个内存页 (4K) 来缓解 Jetsam 一段时间就足够了吗?
猜你喜欢
  • 2015-09-22
  • 1970-01-01
  • 2015-12-21
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多