2012-04-09 6 views
0

Ich plane das Lesen von Profildaten aus einer XML-Datei in JSP.Größe von jdom Dokument vs einzelne Variablen

Jetzt kann ich entweder lesen und speichern Sie die wichtigen Informationen in einzelnen Session-Variablen oder einfach den gesamten Abschnitt aus der XML-Datei in einem jdom-Dokument und setzen Sie das in einer einzigen Sitzung Variable.

Wird sich die Datengröße Ihrer Erfahrung nach auf den großen oder vernachlässigbaren Wert auswirken?

Antwort

1

Es gibt eine Faustregel, wenn es darum geht, XML im Speicher mit DOM zu speichern. Die Größe der XML-Datei * 10. Wenn Ihre XML-Datei also 1 MB groß ist, benötigen Sie 10 MB Speicherplatz.

Aber nach meiner Erfahrung würde ich nie ein DOM-Dokument im Speicher speichern. Sobald ein Student versucht hat, das zu tun, aber die XML-Datei war 50MB groß, also rate mal, was passiert? Wir haben keinen Speicher mehr.

Für Ihren Fall würde ich eine Klasse erstellen, die alle relevanten Informationen enthalten kann, füllen Sie die Klasse durch Lesen der XML.

Müssen Sie wirklich die Profildaten in der Sitzung speichern? Brauchst du es wirklich die ganze Zeit? Manchmal ist es genug, um nur eine ID oder eine kleine Klasse.

+0

Na gut, danke für die Faustregel. Ich muss es nicht tun, ich wäre einfach einfacher. Meine XML-Dateien sind maximal 1 KB groß. Gibt es Unterschiede zwischen den verschiedenen Parsern? –

+0

Gibt es auch eine Faustregel für die Sitzungsdaten? –

+0

Ich möchte vermeiden, die gleichen Daten aus meiner XML-Datei die ganze Zeit zu lesen. –

0

Nun, je mehr Objekte Sie im Speicher speichern, desto weniger freier Heapspeicher haben Sie, es gibt keinen anderen Weg.

Es hängt wirklich von Ihrer Anwendungsdomäne ab.

Aber im Allgemeinen Leute verwenden Cache-Lösungen (ehCache ist eine, aus der Spitze meines Kopfes) zwischen der Datenquelle (Ihre XML-Datei/s) und ihre Anwendung Domain-Modell.

Der Cache läuft ab oder wird bei Bedarf gelöscht. Daher haben Sie eine angemessene Kontrolle über Ihre Objekte und den von ihnen belegten Heap-Speicher.

+0

Nun im Grunde ich meine den Unterschied zwischen Speichern Daten in einem jdom-Objekt und Speichern von Daten in einem var-Objekt. –

+0

Ja, es hängt davon ab, was Sie brauchen. Wenn Sie nur Teile des XML im Speicher ablegen können, dann sollten Sie definitiv damit fortfahren. Meiner Erfahrung nach wird das XML-Markup zur Laufzeit fast nie benötigt, sondern nur für persistente Daten. – Svilen

2

JDOM 2.0.0 - gestern veröffentlicht (ich bin der Maintainer) hat einen verbesserten Speicherbedarf ... es verwendet weniger als 10x so viel Speicher wie das Eingabedokument. Wenn Sie beim Analysieren der XML die 'SlimJDOMFactory' verwenden, verwenden Sie sogar noch weniger. Ein typisches 275 KB-Dokument wird in 1,5 MB mit SlimJDOMFactory analysiert. Sehen Sie sich die Leistungsmetriken für JDOM 2.0.0 unter http://hunterhacker.github.com/jdom/jdom2/performance.html an und suchen Sie nach SlimJDOMFactory, um die Ergebnisse mit der (langsameren), aber effizienteren Fabrik zu erhalten.

Dies beantwortet in keiner Weise Ihre Frage, denn in Wirklichkeit hängt alles von Ihrer Eingabedatengröße ab. Meine Erfahrung, und ich bin voreingenommen, ist, dass es für kleine Dokumente einfacher ist, alles in den Speicher zu laden und es nur für die Großen "schwitzen" zu lassen.