2012-04-17 9 views
9

Durante l'analisi di un file di grandi dimensioni, viene visualizzato il seguente errore Caught: java.lang.OutOfMemoryError: Java heap spaceCome si analizzano i file di grandi dimensioni in Groovy senza superare le dimensioni dell'heap?

Come si analizzano i file di grandi dimensioni in Groovy senza superare le dimensioni dell'heap?

codice di esempio che viene a mancare con file di grandi dimensioni ...

import java.io.File 

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

risposta

16

garantire che la si sta scorrendo sopra il file in un modo che non carica l'intero file nella memoria ...

  • In questo caso attivare specificamente inputFile.getText() eachLine. in inputFile.eachLine
  • non utilizzare .readLines() poiché proverà a caricare l'intero file in memoria,. eachLine {..} dovrebbe essere utilizzato al posto
  • È inoltre possibile estendere la dimensione heap con una bandiera JVM, ad esempio, a 1GB utilizzando groovy -Xmx1024M myscript.groovy Vedi anche answer here

Vai a questa page sulla mailing list per Groovy maggiori informazioni e ulteriori discussioni

codice che funziona senza un errore di spazio di heap ...

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

Questo va bene finché non è una linea massiccia. Può ridursi a ciò che intende fare con i dati. – Steven

Problemi correlati