【问题标题】:How do you parse large files in Groovy without exceeding heap size?如何在不超过堆大小的情况下解析 Groovy 中的大文件?
【发布时间】:2012-04-28 18:08:18
【问题描述】:

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

【问题讨论】:

    标签: groovy


    【解决方案1】:

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

    • 在这种情况下,专门把 inputFile.getText().eachLine 变成 inputFile.eachLine
    • 不要使用 .readLines(),因为它会尝试将整个文件加载到内存中,应该使用 .eachLine{..} 代替
    • 您还可以使用 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
        }
    

    【讨论】:

    • 这没关系,只要它不是一个庞大的行。它可以归结为他/她打算如何处理数据。
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多