2011-08-31 54 views
0

我有NSLog-ed計時器中剩餘的內存在1秒後重復。它只是打印剩餘的內存。虛擬調用applicationDidReceiveMemoryWarning被觸發,即使我有大約80 MB的RAM剩餘

運行時需求應用程序最大大約爲20 MB。日誌顯示可用內存90 MB +當我啓動應用程序。

有一個tabBar,其中一個Tabs有一個Google Mapkit的Map。 一旦應用程序進入工作狀態,RAM - 80 MB。

當我滾動放大的地圖時 - BOOM! 「applicationDidReceiveMemoryWarning」記錄器仍然顯示大約75-80 MB的可用內存計數器。

這導致我的其他視圖數據被釋放。

不管怎樣,即使內存是可用的,當應用程序不會崩潰..在地圖中平移從70-80 MB大幅減少內存到3-4 MB。有了這種情況下,如果應用程序要求內存 - 讓我們說一個捕獲的圖像 - BOOM再次! 「applicationDidReceiveMemoryWarning」

任何人之前都曾經歷過這種情況?任何有用的評論..?

如果您還沒有體驗過這一點 - 只需在蘋果的天氣地圖示例應用程序或手機上的本地地圖應用程序中試用一下吧! - 查看當我們平移放大的地圖時地圖如何消耗運行時內存...... !!

問候,

山姆·費雪

回答

0

這就是它的應該如何工作。記憶在那裏被使用。任何那不是所用的都是浪費。只要你沒有內存泄漏,你正在卸載/重新加載視圖和緩存,這裏沒有問題。

+0

只是想確認在我的代碼中沒有泄漏。我的問題是 - 爲什麼即使我有足夠的內存可用,系統也會拋出Mem警告。雖然當我滾動時我無法控制地圖吃掉內存。系統/ Mapkit應該釋放它不是我.. !! – samfisher

+0

可以這麼想:如果它在內存已經不足的情況下向您發送消息,那麼已經太晚了,它可能會崩潰。當事情「看起來不太好」這將成爲一種啓發式的方式時,它會向您發出警告。 –

+0

至於你的代碼泄漏:不知道。你寫的東西沒有讓我覺得有什麼不好,但是你可以在Xcode和Instruments中使用靜態分析器來檢查。 –