2010-08-19 66 views
1

我有一個相當大的iPad應用程序,當我在xcode調試模式下運行該應用程序時,它在活動監視器中顯示約50 MB,內存增長緩慢。 (大約每30秒約0.1 MB。)但是,當我直接從模擬器(它已經安裝在模擬器中)運行應用程序時,它在活動監視器中顯示大約10 MB並且內存不增長(其常量)。我通過儀器檢查了演奏,並且沒有顯示那裏的泄漏。iPad/iPhone有趣的記憶觀察

有沒有人知道爲什麼顯示不同的內存細節上述2場景和哪一個是正確的?

還有一種方法可以通過控制檯中的應用程序以編程方式打印所消耗的內存嗎?

+0

這是所有從模擬器內?您應該避免在模擬器中進行內存調整,因爲它提供的結果與在實際設備上運行的結果大不相同。 – 2010-08-19 21:20:05

+0

嗨,布拉德,你如何在實際設備中測試內存?在設備上運行時,我們可以從哪裏獲得統計信息?提前感謝您的幫助。 – 2010-08-20 00:38:12

回答

1

活動監視器是追蹤內存增長的一種無用的方式。大約有數十萬不同的RPRVT貢獻者,其中一些完全不直觀。活動監視器當然可以用來弄清楚「呃,它正在增長」,但沒有太多。

使用儀器來跟蹤記憶的增長。

當你說「以調試模式運行」時,你有沒有配置類似殭屍跟蹤或分配信息跟蹤?這將有助於記憶力的增長。

除此之外,分配工具通常會告訴你什麼是促進增長。

還有一種方法可以通過控制檯中的應用程序以編程方式打印所消耗的內存嗎?

像這樣的絕對數字並不是很有用。一個應用程序的增長是不好的,但一個原始數字不會告訴你爲什麼比Activity Monitor更有用。

使用儀器。 :)

+0

嗨,寶貝,感謝您的回覆。 是的。我的應用程序中有NSZombieEnabled。我使用過儀器。在泄漏中它不顯示任何泄漏。 在分配中有很多分配,很難確定是什麼促成了增長。有沒有辦法清除所有內存快照並從頭開始重新捕獲?那麼識別新分配的對象,而不是從應用程序開始分配的所有對象可能更容易? – 2010-08-19 15:51:57

+1

NSZombieEnabled將導致對象永遠不會被釋放(除非你設置NSDeallocateZombies = NO)。它可能不會顯示爲泄漏,因爲它是故意的。 – 2010-08-19 19:48:09

+0

hi bbum和tc, 我禁用了NSZombieEnabled。現在它完美地工作。非常感謝您的小費。我不知道這件事。再次感謝 – 2010-08-20 08:42:52