gpt4 book ai didi

java - 使用 Apache Commons lineIterator 时出现 OutOfMemory 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:40 25 4
gpt4 key购买 nike

我尝试使用 Apache Commons FileUtils.lineIterator 逐行迭代一个 1.2GB 的文件。但是,一旦 LineIterator 调用 hasNext(),我就会得到一个 java.lang.OutOfMemoryError: Java heap space。我已经为 java 堆分配了 1G

我在这里做错了什么?阅读一些文档后,LineIterator 不应该从文件系统读取文件而不是将其加载到内存中吗?

请注意代码是在 Scala 中:

  val file = new java.io.File("data_export.dat")
val it = org.apache.commons.io.FileUtils.lineIterator(file, "UTF-8")
var successCount = 0L
var totalCount = 0L
try {
while ( {
it.hasNext()
}) {
try {
val legacy = parse[LegacyEvent](it.nextLine())
BehaviorEvent(legacy)
successCount += 1L
} catch {
case e: Exception => println("Parse error")
}
totalCount += 1
}
} finally {
it.close()
}

在此感谢您的帮助!

最佳答案

代码看起来不错。可能它没有在文件中找到一行的结尾,而是将大于 1Gb 的很长的一行读入内存。

在 Unix 中尝试 wc -l,看看你得到了多少行。

关于java - 使用 Apache Commons lineIterator 时出现 OutOfMemory 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24334549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com