Meine Anwendung muss Daten in einer XML-Datei verwenden, die bis zu 5 GB groß ist. I Laden von Daten in Image Classed aus dem XML. Die Image-Klasse hat viele Attribute, wie Pfad, Name, MD5, Hash und viele andere Informationen wie diese.Umgang mit großen XM-Datei Java um 5 GB
Die 5-GB-Datei enthält etwa 50 Millionen Bilddaten. Wenn ich die XML-Datei parse, werden die Daten in die App geladen und die gleiche Anzahl von Bildklassen wird in der App erstellt und ich führe verschiedene Operationen und Berechnungen durch es.
Mein Problem ist, wenn ich eine solche Hugh-Datei analysieren meine Erinnerung auffressen. Ich denke, alle Daten werden in den RAM geladen. Aufgrund der Komplexität des Codes kann der gesamte Code nicht bereitgestellt werden. Ich habe dort einen effizienten Weg, mit so einer großen Anzahl von Klassen umzugehen. Ich habe die ganze Nacht geforscht, aber keinen Erfolg gehabt. Kann mir jemand in die richtige Richtung zeigen?
Dank
Ich nehme an, dass Sie wissen, keinen DOM-Parser zu verwenden, sondern stattdessen einen Streaming-Parser wie SAX oder StAX, oder? Aber Sie erwähnen das nicht - warum? Wie genau ** sind Sie beim Parsen der Daten? –
Ich benutze SAX-Parser, aber wegen einer so großen Menge an Daten, 50 Millionen Bildobjekte den App-Speicher auffressen, wenn ich den Speicher erhöhen die App funktioniert gut. Die App-Daten können auch von sqlite geladen werden, ich bekomme das gleiche Problem von dort auch, das Problem ist so eine große Menge an Daten, und ich denke, eine solche Menge Objekte sind alle im RAM. –
Ja, nach dem Parsen der Xml die Daten speichern innerhalb der SQLite, wenn ich die Daten in Zukunft verwenden möchte, kann ich von SQLite, das ist viel schneller als das Parsen der XML, aber das Problem kommt, wenn die Menge der Daten, das Bild Klasse hat wichtige Parameter, wie Bildpfad, Name, also muss ich alle Daten zurück in die App laden, die wieder die gleiche Anzahl an Objekten erzeugen, –