如何在不超出堆大小的情况下解析Groovy中的大文件?

时间:2012-04-17 11:47:09

标签: groovy

解析大文件时,我收到以下错误Caught: java.lang.OutOfMemoryError: Java heap space

如何在不超出堆大小的情况下解析Groovy中的大文件?

大文件失败的示例代码......

import java.io.File

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

1 个答案:

答案 0 :(得分:17)

确保您以不会将整个文件加载到内存中的方式迭代文件...

  • 在这种情况下,专门将 inputFile.getText()。eachLine 转换为 inputFile.eachLine
  • 请勿使用 .readLines(),因为它会尝试将整个文件加载到内存中。应使用 {。}
  • 您还可以使用jvm标志扩展堆大小,例如使用groovy -Xmx1024M myscript.groovy扩展到1GB请参阅answer here

请参阅groovy邮件列表中的page以获取更多信息和进一步讨论

没有堆空间错误的代码......

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