如何在Groovy中解析大文件而不超过堆大小?
解析一个大文件时,我发现以下错误如何在Groovy中解析大文件而不超过堆大小?,groovy,Groovy,解析一个大文件时,我发现以下错误被捕获:java.lang.OutOfMemoryError:java堆空间 如何在Groovy中解析大文件而不超过堆大小 使用大型文件失败的示例代码 import java.io.File def inputFile = new File("c:/dev/test.txt") inputFile.getText().eachLine{ it, i -> ... do something with each line
被捕获:java.lang.OutOfMemoryError:java堆空间
如何在Groovy中解析大文件而不超过堆大小
使用大型文件失败的示例代码
import java.io.File
def inputFile = new File("c:/dev/test.txt")
inputFile.getText().eachLine{ it, i ->
... do something with each line
}
确保您在文件上迭代的方式不会将整个文件加载到内存中
- 在本例中,专门将inputFile.getText().eachLine转换为inputFile.eachLine
- 不要使用.readLines(),因为它会尝试将整个文件加载到内存中,因此应改用每个hline{..}
- 您还可以使用jvm标志扩展堆大小,例如通过使用
将堆大小扩展到1GB,另请参见groovy-Xmx1024M myscript.groovy
def inputFile = new File("c:/dev/test.txt")
inputFile.eachLine{ it, i ->
... do something with each line
}
这没关系,只要不是一条大线。这可以归结为他/她打算如何处理这些数据。