【问题标题】:IPhone watchdog & mallociPhone看门狗和malloc
【发布时间】:2010-08-19 15:22:19
【问题描述】:

我的应用程序正在使用相当多的内存,因此它经常被看门狗杀死。 在我努力减少内存消耗(并改变一些其他东西)的过程中,我重写了一些系统函数(准确地说,替换了几个 CoreText 类)。

实际上进行得非常好,我已经设法将内存消耗减少了约 3mb(根据分配和内存监控工具)。
尽管如此,现在我的应用程序很快就会被看门狗杀死。当旧版本仍在工作(即使消耗更多内存)时,新版本会被操作系统杀死。

我认为这可能是由于过度使用 malloc/free 来分配/释放堆上的许多小结构。

是这样吗?
还有哪些其他问题可能导致此行为(内存消耗减少/看门狗更快地杀死应用程序)?
可能是因为我的应用程序现在管理内存而不是系统库吗?

【问题讨论】:

  • 查看控制台和崩溃日志(Xcode -> Organizer -> Your Device -> Console/Device Logs)。控制台应该说明你的应用程序被杀死的原因,如果它是“低内存”杀死,它也会列出(按日期排序,检查最新事件)。它将是“计数驻留页面”列,指示操作系统看到的“内存使用情况”;如果你的应用被杀了,它会说“(抛弃)”。

标签: iphone memory-management malloc


【解决方案1】:

如果你得到了一个看门狗,那仅仅意味着你太长时间没有响应了。您需要放置一些代码来更新您忙碌的用户。您还应该在屏幕上提供取消功能,以允许用户中止花费太多时间的进程。

【讨论】:

  • 我的意思是我的应用程序被“信号”0“杀死了。我相信这意味着应用程序被看门狗杀死了,还是我错了?
  • 否,信号 0 表示没有内存。看门狗是一种测量程序是否外出吃午饭的设备。例如,在无限循环中。如果您不定期检查,操作系统只会杀死您。信号 0 表示您有泄漏或只是使用了过多的内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 2011-12-04
  • 1970-01-01
相关资源
最近更新 更多