2013-11-05 75 views
10

我的應用程序已經收到內存不足的一種重複操作警告,並最終崩潰5.7MB。當我在樂器中進行配置時,碰撞時我只能看到5.7 MB的活動字節。 (崩潰顯示沒有回溯,沒有錯誤等,它只是終止,這是一個內存崩潰的指示。)應用接收內存不足的警告,但只活字節

爲什麼我的應用程序崩潰與如此低的內存佔用?我已經在iOS 5.1的iPad 1,測試

Instruments screenshot

編輯:
我是能夠解決的崩潰。這是由於對具有3個UIImages屬性的對象的額外保留呼叫。這些對象的積累導致了內存警告和崩潰。

但是,問題仍然存在:爲什麼儀器顯示只有5.7MB的活動字節?這可能是由於UIImage's自動緩存?

+0

崩潰可能由於內存不足。什麼是崩潰錯誤? – Raptor

+0

好想法,但沒有給出回溯或錯誤。它只是終止。 (我已經在編輯中添加了這個問題。) –

+0

如何在Xcode控制檯輸入'bt'(然後按Enter鍵)?編譯器說什麼? – Raptor

回答

0

我在你發佈的代碼中看不到任何明顯的泄漏,但是如果你只是想重新繪製圖像(大概是強制立即解壓縮),那麼這是一個非常複雜的方法。只要這樣做:

- (void)loadImage:(UIImage *)image 
{ 
    UIGraphicsBeginImageContextWithOptions(image.size, image.scale); 
    [image drawAtPoint:CGPointZero]; 
    self.someImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

希望這將解決您所看到的任何泄漏。

+1

ya在那個方法中間有很多像素點操作,爲了簡單起見,我解決了這個問題。當我註釋掉代碼時,同樣的問題仍然存在,所以我認爲它與展示無關。 –

0

你在環境變量中設置NSZombieEnabled爲YES嗎?

當啓用殭屍時,內存永遠不會真正釋放,但會保留在殭屍池中,用於調試對無效指針的引用。