2012-04-17 5 views
9

Wenn eine große Datei ich die folgende Fehlermeldung erhalten Parsen Caught: java.lang.OutOfMemoryError: Java heap spaceWie parst du große Dateien in Groovy, ohne die Größe des Heapspeichers zu überschreiten?

Wie Sie große Dateien in Groovy analysieren kann, ohne Heap-Größe von mehr als?

Beispiel-Code, der mit großen Dateien nicht ...

import java.io.File 

def inputFile = new File("c:/dev/test.txt") 
    inputFile.getText().eachLine{ it, i -> 
      ... do something with each line 
     } 

Antwort

16

Stellen Sie sicher, dass die Sie in einer Art und Weise über die Datei sind laufen, die nicht die gesamte Datei in den Speicher nicht geladen ...

  • In diesem Fall drehen speziell inputFile.getText(). eachLine in inputFile.eachLine
  • nicht verwenden Sie .readLines() wird versucht, die gesamte Datei in den Speicher zu laden,. eachLine {..} sollte stattdessen
  • Sie können auch die Speichergröße mit einer Jvm Flagge erweitern verwendet werden, zB zu 1 GB unter Verwendung groovy -Xmx1024M myscript.groovy Siehe auch answer here

diesen page Auf der groovy Mailingliste weitere Informationen und weitere Diskussion

Code, der ohne einen Heap-Speicher Fehler funktioniert ...

def inputFile = new File("c:/dev/test.txt") 
inputFile.eachLine{ it, i -> 
     ... do something with each line 
    } 
+5

Diese Ordnung ist, solange es nicht eine riesige Linie ist. Es kann darauf hinauslaufen, was er mit den Daten machen will. – Steven

Verwandte Themen