Datei einlesen, memory error

Hallo zusammen,

ich möchte mit Java eine Datei einlesen und verschiedenen Wörter in eine Hashmap legen.

Nun bekomme ich aber ab ca. 15 MB Dateigröße eine Fehlermeldung Out of memory.

Hier meine Methode zum einlesen:

String line=new String();
try{
in=new BufferedReader(new FileReader(„test.txt“));
buffer = new StringBuffer();
while((line=in.readLine())!=null) {
line=line.toLowerCase();
buffer.append(line).append(’\n’);
}
Danach wird mit einem Stringtokenizer weitergearbeitet.

Kann mir jemand erklären wie ich das ganze angehe dass ich auch Dateien mit über 100 MB problemlos einlesen kann?

Hallo,

Nun bekomme ich aber ab ca. 15 MB Dateigröße eine
Fehlermeldung Out of memory.
Kann mir jemand erklären wie ich das ganze angehe dass ich
auch Dateien mit über 100 MB problemlos einlesen kann?

mit den Option -Xms und -Xmx kannst du die initiale und maximale Größe des Speichers festlegen, der für die virtual Machine reserviert wird, also z.B. mit

java -Xms128m -Xmx256m DeineKlasse

reservierst du initial 128 Mb und maximal 256Mb.

Zusätzlich könntest den String nach jeder Zeile weiterbearbeiten. Momentan liest du ja die gesamte Datei erst einmal als StringBuffer ein, bevor du die Wörter die dich interessieren extrahierst. Das könntest du nach jeder Zeile machen, dann brauchst du den (uninteressanten) Rest nicht im Speicher zu halten.

gruß
Heavy