2011-08-07 48 views
2

我一直在4個IOS設備上測試我的應用程序。 1個iPod touch 2g,1個iPhone 3gs,兩個iPhone 4's。在iPhone 4上,我的應用程序在運行時將佔用大約30-50mb的內存。在3G上它大約需要15-30mb,而在iPod上則需要大約15-27mb的內存。我的應用程序可以使用多少內存?或通常是什麼?

是否有任何一種規則來對付您的應用程序可以使用多少內存?該應用程序不會崩潰,但我認爲我在某處讀取最大值是20mb的內存使用量?

坦白地說,我很驚訝iPod touch 2g能夠運行這個東西,我被告知,最終你會離開iPod 2g就像20米的RAM。

現在我有另一個問題,在運行儀器時,是否會在設備上添加任何內存使用量?看起來像運行樂器時,應用程序比沒有運行時更滯後。

感謝, 雅各

回答

1

你通常會得到一個內存警告,當你打22 MB。儀器會減慢處理速度,但不會在設備上增加額外的內存使用量。

+0

會顯示在控制檯?因爲我沒有得到一個。 – Jacob

+0

@Jacob不,但你會得到一個回調 - (void)didReceiveMemoryWarning –

+0

從我所看到的,在iPod 2g時,它擊中27MB,然後就可以釋放內存並將其推回到20-25mb – Jacob

10

沒有確切的限制。從技術上講,您的應用程序可以使用「達到當前可用內存的總量」,但該數量會因設備型號,iOS版本,其他應用程序在後臺運行的內容等因素而異。

說話非常一般來說,如果您希望您的應用程序在iPhone 3G等較舊設備上可靠運行,則應該拍攝10-15 MB的RAM。對於較新的設備,30+ MB應該不成問題。這意味着雖然如果可以的話減少這個數量總是好的,但是即使你沒有,你的應用程序仍然可以正常工作。

另請注意,由設備發送的內存警告不是非常有用或指示特定的內存限制。他們並不是說你的應用在絕對意義上使用了太多的內存。相反,他們只是說目前的設備,以及其當前的應用程序集,內存不足。如果您願意,可以使用safely ignore them,並讓操作系統關閉一些其他應用程序以爲您騰出空間。

關於滯後應用程序的儀器,儀器正在輪詢設備以獲取有關應用程序當前狀態和其他歷史信息的詳細信息。與收集和傳達這些信息相關的開銷。但是,就影響您應用的空間需求而言,它們應該可以忽略不計。

+0

我的應用程序加載了大量的視圖控制器,當一個被加載時,它只是繼續拍攝並佔用越來越多的內存。如果我能夠讓它從一個可透過的控制器中返回一些內存,那麼我將處於類似於10mb – Jacob

+0

那麼爲什麼不在轉換到新控制器時釋放舊控制器呢? – aroth

+0

MainViewController * menuGo = [[MainViewController alloc] initWithNibName:@「MainView」bundle:nil]; menuGo。modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentModalViewController:menuGo animated:YES]; [menuGo發佈]; 我這樣做,但它仍然繼續採取更多。至於釋放控制器,我不知道如何做到這一點 – Jacob

相關問題