2012-11-13 60 views
5

我有一個巨大的同步過程,在該過程中,我下載並解壓縮400-500 XML文件,然後解析它。有了這個數據,我將通過RestKit API創建大量的核心數據對象。在開始時,我有一個內存警告,活動字節爲450mb +,因爲我沒有使用autorelease池,只試圖在最後保存核心數據。設備上的內存警告,而不是儀器

我修正了這個問題,現在頻繁地保存到核心數據並使用@autoreleasepool塊。當我現在使用樂器運行我的應用程序時,我可以看到活動字節的大小隻有20mb-30mb,總是釋放內存並永遠不會調整大小。該過程正常。但是當我在沒有樂器的情況下啓動應用程序時,在查看文件後,我得到一個Memory Warning。後來應用程序崩潰。

使用和不使用instruments工具運行應用程序有什麼不同?爲什麼會以不同的結果結束?

+2

一個區別是,通常使用Instruments進行分析會導致發佈版本的生成,而通過Xcode運行會導致進行調試構建。不知道這可能會如何影響這種情況。 – borrrden

+3

例如,你可以在調試配置中啓用殭屍,但不能釋放配置 – hooleyhoop

+0

傢伙 ​​- 我只是喜歡這個平臺。我只是不知道這些樂器正在使用發佈版本。因爲我的物體很大,所以啓用殭屍是失敗的。當我使用發佈版本時,一切都像魅力一樣工作。請給它作爲答案,以便我可以接受它。你不知道它對我有多大幫助。非常感謝你:) – NDY

回答

4

我添加了這個答案,因爲我很高興我遇到了這個頁面。

什麼@borrrden建議部分屬實。您可以配置在配置文件時將使用哪個生成設置。要配置這個,轉到Xcode並打開Edit Scheme對話框,並在左側菜單中選擇配置文件XXX.app。你會看到你可以選擇一個構建配置(調試或發佈)。

enter image description here

什麼@hooleyhoop評論更重要,以找到解決方案。即使您的配置文件構建配置設置爲調試,但配置文件與Xcode中的默認運行之間仍然存在差異。您可以指定診斷中的運行部分。在那裏,有一個選項叫啓用殭屍對象內存管理。確保這個選項是未選中

enter image description here

這些診斷運行設置不同時分析使用。這是你正在經歷的行爲的解釋。 「配置文件」部分也沒有「診斷」選項卡。


的結果是,我的遊戲(阿甘)5分鐘的主菜單與無所事事殭屍對象啓用後墜毀。一旦我禁用了Zombie Objects,我的遊戲運行時間據我所知無窮無盡。 45分鐘後,仍然沒有記憶警告。

+2

這是因爲啓用殭屍可以有目的地泄漏所有對象,以便能夠跟蹤何時將消息發送給死對象。 – JustSid

+0

好的,那就是爲什麼。我不確定。感謝那。我認爲這件事很容易被遺忘,它仍然被打開。 –

相關問題