我將成千上萬的數據插入到SQLite存儲的核心數據中。 我的ManagedObjectContext的undomanager設置爲nil。 我在for循環中插入NSManagedObject。 嘗試以兩種方式保存上下文,核心數據內存問題
1完成循環後(for循環外)。
for(int i =0;i<1000;i++){
MyEntity *object = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:[self managedObjectContext]];
object.name = [NSString stringWithFormat:@"%d",i];
object.age = [NSNumber numberWithInt:i];
}
[self managedObjectContext] save:nil];
2對於每個插入(for循環內)。
for(int i =0;i<1000;i++){
MyEntity *object = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:[self managedObjectContext]];
object.name = [NSString stringWithFormat:@"%d",i];
object.age = [NSNumber numberWithInt:i];
[self managedObjectContext] save:nil];
}
最後我調用了ManagedObjectContext的reset。
[[self managedObjectContext] reset];
但問題是這個過程的內存(插入)完成後沒有回來。
任何人都可以告訴我這是什麼錯誤,或者這是預期的行爲? 任何避免此內存泄漏的解決方法?
UPDATE
我試圖[[self managedObjectContext] refreshObject:object mergeChanges:NO];
它可以放回一定數量的內存,但不fully.Still尋找在CoreData
管理大量數據的一個很好的解決方案。
如果有人向我推薦一個處理大量數據的示例項目(源代碼)CoreData
,那麼這對我很有幫助。 謝謝。
謝謝你,讓我檢查一下我在執行 – Raj 2012-01-18 09:11:38
它並不放回使用的內存 – Raj 2012-01-18 14:37:56
你怎麼檢查呢? – user170317 2012-01-21 22:38:28