2012-04-17 19 views
9

al analizar un archivo de gran tamaño me sale el siguiente error Caught: java.lang.OutOfMemoryError: Java heap space¿Cómo se analizan los archivos grandes en Groovy sin exceder el tamaño del montón?

¿Cómo analizar los archivos grandes en Groovy sin exceder tamaño de la pila?

código de ejemplo que falla con archivos de gran tamaño ...

import java.io.File 

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

Respuesta

16

asegurar que el que está interactuando sobre el archivo de una manera que no se carga todo el archivo en la memoria ...

  • En este caso, gire específicamente inputFile.getText() eachLine. en inputFile.eachLine
  • no utilice .readLines() ya que intentará cargar todo el archivo en la memoria,. eachLine {..} debe usarse en lugar
  • También puede ampliar el tamaño de la pila con una bandera JVM, por ejemplo, a 1 GB mediante el uso de groovy -Xmx1024M myscript.groovy Véase también answer here

ver este page en la lista de correo para el maravilloso más información y más discusión

código que funciona sin un error de espacio de almacenamiento dinámico ...

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

Esto está bien siempre y cuando no sea una línea masiva. Puede reducirse a lo que él/ella tiene la intención de hacer con los datos. – Steven

Cuestiones relacionadas