好了,所以這是一個非常模糊的問題,但讓我告訴你一些背景:如何限制iOS應用程序的內存使用情況
我有一個簡單的應用程序,到目前爲止 - 大約5個屏幕每個將訪問數據庫和在結果視圖上顯示一些信息。這些對象不是巨大的,大約有15個屬性,其中一些屬於包含3-4個對象的NSSets。
我注意到,當我在第5個屏幕上時,內存已經跳到將近6mb,這對我來說似乎很大(儘管我可能是錯的)。
我注意到每次我做一個像NSFetchRequest一樣的數據庫調用時,它會使用通常的NSManagedObjectContext,NSPersistentStoreCoordinator等,就像你期望的那樣。
當我完成數據庫或類似的事情時,是否需要關閉上下文?我記得這樣的持久性上下文在我的Java時代中造成了巨大的內存問題,並且因爲沒有其他任何事情(我相信)可以真正對應用程序徵稅,我猜測問題是。
我正在使用ARC和CoreData。
任何洞察到這將非常感激。
更新
所以我用儀器作爲推薦(偉大的工具,順便說一句),它看起來好像問題是由一個屏幕約30-40 UILabels(導致大約4MB使用)造成的。似乎有很多UILabels的內存,或者我完全沒有?
不太可能是上下文問題。您是否使用Instriments來找出使用所有內存的對象類型?您是否爲視圖背景加載任何圖像? – Wain
您是否試過在樂器中按名稱跟蹤對象? – Aaron
嘗試在樂器下運行您的應用程序,並在其中使用分配工具。查看每次獲取調用時內存圖的變化情況。在每次獲取Core Data之前和之後堆積快照也很有用。這樣你可以看到在這種情況下保留了哪些對象。 – Macondo2Seattle