2010-08-19 116 views
0

我的应用程序使用了相当多的内存,因此它经常被看门狗杀死。 在我努力减少内存消耗(并改变一些其他的东西)我已经重写了一些系统功能(取而代之的几个CoreText类)。IPhone看门狗&malloc

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

我认为这可能是由于过度使用malloc/free来分配/释放大量小堆在堆上。

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

+0

查看控制台和崩溃日志(Xcode - > Organizer - >您的设备 - >控制台/设备日志)。控制台应该说明为什么你的应用程序被杀死,如果它是一个“低内存”杀,它也会列出(按日期排序,检查最新的事件)。它将是“计数常驻页面”列,表示操作系统所看到的“内存使用量”;如果你的应用程序被杀害,它会说“(抛弃)”。 – 2010-08-20 15:16:47

回答

1

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

+0

我的意思是我的应用程序正在被“signal”0“”杀死。我认为这意味着申请被监管人员杀害,或者我错了吗? – Alexey 2010-08-20 06:42:35

+0

不,信号0表示没有记忆。看门狗是一种可以测量程序是否外出吃午饭的设备。例如,在无尽的循环中。如果你没有定期检查,操作系统将简单地杀死你。信号0表示您有泄漏或者只是使用了太多内存。 – 2010-08-20 16:07:20