11

解析大文件时出现以下错误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
        }
4

1 回答 1

18

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

  • 在这种情况下,专门将inputFile.getText().eachLine变成inputFile.eachLine
  • 不要使用.readLines(),因为它会尝试将整个文件加载到内存中,. 应该使用eachLine{..}
  • 您还可以使用 jvm 标志扩展堆大小,例如使用 1GBgroovy -Xmx1024M myscript.groovy另请参阅此处回答

有关更多信息和进一步讨论,请参阅 groovy 邮件列表上的此页面

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

def inputFile = new File("c:/dev/test.txt")
inputFile.eachLine{ it, i ->
        ... do something with each line
    }
于 2012-04-17T11:47:32.900 回答