我有一个异步写入的Realm db,并且在从Rest API初始加载期间,文件大小似乎呈指数级增长。在我写完它后,它继续增长,达到1.5GB。
使用writeCopyToPath
,基础数据为1.5 Mb。
下面是我的插入命令:
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)
}
}
}
要查询我有一个数据管理器,它由每个ViewController实例化(但在返回数据后不保留)。数据管理器具有如下查询方法:
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
}
这些查询和插入操作可以在同一时间段内发生。我应该采取什么策略来阻止它像这样成长?
答案 0 :(得分:2)
您可能会持有对较旧版本数据的引用,从而阻止其被回收。有关详细信息,请查看Realm文档的File size & tracking of intermediate versions部分。