2012-04-17 15 views
9

Podczas analizowania dużego pliku I pojawia się następujący błąd Caught: java.lang.OutOfMemoryError: Java heap spaceJak analizować duże pliki w Groovy bez przekraczania wielkości sterty?

jaki sposób analizowania dużych plików w Groovy, bez przekroczenia wielkości sterty?

przykład kodu, który nie działa z dużymi plikami ...

import java.io.File 

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

Odpowiedz

16

Upewnij się, że jesteś iteracji nad pliku w taki sposób, że nie ładuje cały plik do pamięci ...

  • W tym przypadku konkretnie włączyć inputFile.getText(). eachLine w inputFile.eachLine
  • nie używaj .readLines(), ponieważ spróbuje załadować cały plik do pamięci,. eachLine {..} powinien być stosowany zamiast
  • Możesz również rozszerzyć rozmiar sterty JVM z flagą, na przykład do 1 GB za pomocą groovy -Xmx1024M myscript.groovy Zobacz także answer here

Zobacz ten page na porywające listy do więcej informacji i dalsza dyskusja

kod, który działa bez błędu przestrzeni sterty ...

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

to jest w porządku tak długo, jak to nie jest jedna masywna linia. Może sprowadzać się do tego, co zamierza zrobić z danymi. – Steven

Powiązane problemy