Ich habe eine Realm-db, die asynchron geschrieben wird, und die Dateigröße scheint exponentiell während einer anfänglichen Belastung von einem Rest API zu wachsen. Es wächst weiter, nachdem ich mit 1,5 GB fertig geschrieben habe.Minimierung von Realm-Dateigröße: Praktischer Ansatz
Mit einem writeCopyToPath
sind die zugrunde liegenden Daten 1,5 Mb.
Unten ist mein Befehl 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)
}
}
}
Zur Abfrage ich einen Datenmanager haben, die von jedem Viewcontroller (, aber nicht gehalten, nachdem sie mit Daten zurückgibt) instanziiert wird. Der Datenmanager verfügt über folgende Abfragemethoden:
Diese Abfragen und Vorgänge einfügen können während desselben Zeitraums auftreten. Mit welchen Strategien sollte ich verhindern, dass es so wächst?
In welchen Threads werden Ihre Inserts ausgeführt? – bdash
Ich starte einen neuen Thread mit 'dispatch_async (dispatch_queue_create (" background ", nil)) {' sollte ich das einfach entfernen? – John
Können Sie versuchen, einen Autorelease-Pool um den gesamten Code in dem Block hinzuzufügen, den Sie an "dispatch_async" übergeben? – bdash