Android Java: OutOfMemory beim Einfügen einer riesigen Liste in die Datenbank SQL
Ich arbeite gerade an einem Android-Projekt, in dem ein ORM-Greendao verwendet wird. Es erlaubt mir, eine Anzahl von Entitäten (die offensichtlich Objekte sind) auf einmal in die Datenbank einzufügen (in einer Transaktion). In der Praxis gibt es eine Methode
insertOrReplaceInTx (...)
Dies ist ein Parameter für eine Sammlung, die eine Liste von Objekten enthält. Das Problem ist, dass meine Liste 12000 Objekte enthält und von Zeit zu Zeit eine Einfügung zu einer OutOfMemory-Ausnahme führt. Ich überlege mir einen intelligenten Weg, um das Problem zu lösen und zukünftige OOM zu verhindern. Die einzige Idee, die mir in den Sinn kommt, ist, die riesige Sammlung in verschiedene Unterkollektionen aufzuteilen (sagen wir 500 Elemente) und in einer Schleife mehrere kleine Festschreibungen anstelle einer großen festzuschreiben. Das Schlimme daran ist, dass es länger dauert, die Aufzeichnungen und die Zeitangaben hier einzufügen. Am Ende bin ich mir nicht sicher, ob Commit nach Commit den Haufen sowieso nicht tötet. Rufen Sie vielleicht eine sleep () -Methode dazwischen auf, um GC den Haufen räumen zu lassen ... aber es erscheint mir als eine Art hässliche Lösung.
irgendwelche klugen Ideen auf Ihrer Seite? Danke im Voraus