Hallo,
ich hab folgendes Problem. Ich musste beruflich eine Klasse schreiben, die folgendes tut:
1. Datei einlesen: die besteht aus x Zeilen mit jeweils einer Zuordnung --> Attribut=Wert
2. Speichern dieser Zuweisungen in einer Hashtable
3. werden zwei Strings übergeben (Attribut + Wert). Ist das Attribut vorhanden, soll der Wert zurückgeliefert werden, ansonsten die Hashtable und damit die Datei um diese Zuordnung erweitert werden.
Ok. soweit einfach. Ich les das ein und schreib die Daten entweder in einen Stringbuffer, den ich am Ende wieder in die Datei schreiben kann, oder nur in die Hashtable, die ich am Ende über ne Schleife in die DAtei schreiben kann.
Um das mit größeren Dateien testen zu können, hab ich mir eine Klasse geschrieben, die bis zu einem Maximalwert einfach Zuordnungen in einen Stringbuffer und den in eine Datei schreiben sollte. Da bekam ich den ersten outOfMemoryError bei knapp 215000 Zeilen. Das hab ich gelöst indem ich alle 200000 Zeilen, den Stringbuffer speicher und neu erzeuge. Also macht die Dateierzeugung keine probleme, außer man hätte keinen Plattenplatz mehr.
Logischerweise krieg ich ja aber die gleichen Speicherprobleme, wenn ich die Datei ja mit der ursprünglichen Klasse dann einlesen und weiter verarbeiten muss. Und da wüsste ich nicht, wie ich regelmäßig das alles zwischenspeichern sollte.
Hab schon mit Xms und Xmx versucht mehr Speicher zur Verfüguing zu stellen, bis meinem 1 GB Arbeitsspeicher, aber das hatte überhaupt keine Auswirkungen.
Hat noch jemand eine Idee?
ich hab folgendes Problem. Ich musste beruflich eine Klasse schreiben, die folgendes tut:
1. Datei einlesen: die besteht aus x Zeilen mit jeweils einer Zuordnung --> Attribut=Wert
2. Speichern dieser Zuweisungen in einer Hashtable
3. werden zwei Strings übergeben (Attribut + Wert). Ist das Attribut vorhanden, soll der Wert zurückgeliefert werden, ansonsten die Hashtable und damit die Datei um diese Zuordnung erweitert werden.
Ok. soweit einfach. Ich les das ein und schreib die Daten entweder in einen Stringbuffer, den ich am Ende wieder in die Datei schreiben kann, oder nur in die Hashtable, die ich am Ende über ne Schleife in die DAtei schreiben kann.
Um das mit größeren Dateien testen zu können, hab ich mir eine Klasse geschrieben, die bis zu einem Maximalwert einfach Zuordnungen in einen Stringbuffer und den in eine Datei schreiben sollte. Da bekam ich den ersten outOfMemoryError bei knapp 215000 Zeilen. Das hab ich gelöst indem ich alle 200000 Zeilen, den Stringbuffer speicher und neu erzeuge. Also macht die Dateierzeugung keine probleme, außer man hätte keinen Plattenplatz mehr.
Logischerweise krieg ich ja aber die gleichen Speicherprobleme, wenn ich die Datei ja mit der ursprünglichen Klasse dann einlesen und weiter verarbeiten muss. Und da wüsste ich nicht, wie ich regelmäßig das alles zwischenspeichern sollte.
Hab schon mit Xms und Xmx versucht mehr Speicher zur Verfüguing zu stellen, bis meinem 1 GB Arbeitsspeicher, aber das hatte überhaupt keine Auswirkungen.
Hat noch jemand eine Idee?