2010-08-19 164 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