我有一個基於導航控制器的應用程序,它可以在很長一段時間內處於活動狀態,並可以加載多個屏幕,在其生命週期中重新訪問一些業務應用程序。當我推動屏幕時,我分配一些內存;當我回去(彈出它)我需要確保內存不會丟失。基於導航控制器的應用程序中的內存使用情況記帳;
現在在泄漏我有一個乾淨的石板。沒有內存泄漏,與10.6靜態分析功能不太相關,並且使用儀器進行了確認。手動檢查,我確定我將viewWillAppear中分配的所有內容都放在viewWillDisappear中;在viewDidUnload中的viewDidLoad中分配的所有內容;在dealloc中另有分配。
我已經在開發中使用了NSZombiesEnabled,但是我現在肯定沒有它。
當在對象分配下運行時,我看到內存使用量在增長。在進入一個新的視圖時,我看到記憶在增加,但在回航時沒有減少相同的數量。這也不是簡單的系統不能立即釋放,當一段時間留下記憶保持靜止。這種行爲在每個視圖中都可以看到。
我可以使用什麼技術來隔離此內存?我應該瞄準應用程序在每個視圖後返回到某個基線嗎?如何隔離子系統(如核心數據)使用的內存報告,我依賴於錯誤來加載對象,而不應該試圖明確地操作它們,以及我完全控制的代碼?
感謝 - 我害怕知道答案「只是寒意」 ......但感覺不對,看看內存增加這樣的。 – 2009-11-23 01:13:27
我知道:) 我正在做我的第一個「大型」應用程序,我真的很擔心iPhone在懶散的內存管理方面會採取什麼措施。我拉着1400 - 16.000項目列表,一次在導航控制器7-8中堆疊自定義的UITableViews,使用半複雜的核心數據設置和解析Web服務中的巨大xml文件,預加載最多20頁的scrollView/pageControl效果在不同的線程。我認爲這將是一個內存管理的噩夢:)我幾乎完成,內存永遠不會超過3 MB。我認爲1G iPhone大約有20MB,而3GS則有很多倍。 – RickiG 2009-11-23 07:51:52
當你說它不斷增加時,在它停止之前它有多大以MB爲單位? – RickiG 2009-11-23 07:53:27