我有一個Realm db,它是異步寫入的,並且在來自Rest API的初始加載期間文件大小似乎呈指數級增長。寫完之後它會繼續增長,最終達到1.5GB。使用writeCopyToPath
,底層數據爲1.5 Mb。最小化領域文件大小:實用方法
下面是我的INSERT命令:
dispatch_async(dispatch_queue_create("background", nil)) {
let realm = try! Realm()
let this_activity = DataManager().getExerciseById(activity_id)
if this_activity != nil {
for (_, subJson) in data_ball["mapPoints"] {
let map_point = MapPoint(this_activity:this_activity!, json: subJson)
try! realm.write {
realm.add(map_point)
}
}
}
要查詢我有一個由每個視圖控制器實例化(而不是緊緊抓住它的數據返回後)數據管理。數據管理器具有這樣的查詢方法:
func getSegments(activity_id:String) -> [Dictionary<String, AnyObject>]{
var intervals:[Dictionary<String, AnyObject>] = []
let realm = try! Realm()
let predicate = NSPredicate(format: "id == %@", activity_id)
let intervals = realm.objects(Segment).filter(predicate).sorted("startTime", ascending: true)
for interval in intervals {
intervals.append(interval.toDictionary())
}
return intervals
}
這些查詢和插入操作可能發生在同一時間段。我應該採取什麼策略阻止它像這樣成長?
你的插入執行了哪些線程? – bdash
我使用dispatch_async(dispatch_queue_create(「background」,nil)){'我應該刪除它嗎? – John
你可以嘗試在你傳遞給'dispatch_async'的塊中添加一個autorelease池嗎? – bdash