2011-01-10 67 views
2

如問題所述,它死於7MB ..(iphone)當儀器顯示「所有分配」只有7mb時,我的應用程序會收到內存警告?

這是正常的嗎? (7MB ..)
儀器顯示無泄漏。

謝謝

  • 編輯

編輯17MB - > 7MB。 我通過取出我分配的不必要池來降低內存使用量。

不過,它會在7 MB時獲得內存警告。 我基本上是在創建圖像並在獲取警告時不斷髮布它們。

我做了很多的

- (UIImage*) allocImage 
{ 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    UIImage* uiImage = [UIImage imageWithData: imageData]; 
    UIImage* changedImage = [uiImage changeColor: self.currentColor]; 
    uiImage = changedImage; 
    [uiImage retain]; 
    [pool release]; 

    return uiImage; 
} 

並釋放我的UIImage的(儀器顯示內存2-3 MB上升,可以追溯到7MB)

每個圖像爲1MB大在內存上,我應該在應用程序獲得警告的時候創建/銷燬大約100次的圖像。

  • 編輯2

發現了類似的情況下,沒有辦法有,但..

My iphone app gets memory warning and killed at 6.8MB
Memory Warning but Small Live Bytes

也許我應該將 「創造的UIImage」,以C/C++代碼?這樣我不必擔心加載許多圖像?不知道這是可能的。
或者可能爲圖像使用內存池,因爲圖像大小完全相同。

+0

爲了記錄,_mg_是毫克,質量單位的縮寫。 =) – 2011-01-10 16:04:38

+0

哈哈感謝Bavarious – eugene 2011-01-10 16:11:43

回答

2

這取決於很多因素,有問題的設備,iOS版本,同時在設備上發生了什麼,等等。基本上,您應該在他們到達時認真對待警告。獲得警告不是問題。當你得到它們時什麼也不做是一個壞主意。

以我的經驗,17Mb是在正常的偏低。

+0

關於ipad 3.2.1,除了測試這個應用程序之外沒有做任何事情。 :( – eugene 2011-01-10 15:46:19

1

是的,這是正常的。但在iOS設備上處理內存有點棘手。

首先,您必須知道可用內存的數量 - 您可以在http://adeem.me/blog/2009/04/01/get-the-amount-of-free-memory-available/找到一些源代碼。 然後進行一些小於被測量的分配自由迭代(此操作會強制另一個應用程序釋放內存)。之後,再次測量可用內存,並且,您會感到驚訝 - 可用內存的大小已經增長。

相關問題