【发布时间】:2014-06-20 19:44:11
【问题描述】:
我正在尝试使用 Apache Commons FileUtils.lineIterator 逐行迭代 1.2GB 文件。但是,只要LineIterator 调用hasNext(),我就会得到java.lang.OutOfMemoryError: Java heap space。我已经将1G 分配给了java 堆。
我在这里做错了什么?在阅读了一些文档之后,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()
}
在这里感谢您的帮助!
【问题讨论】:
-
哇,此刻我们的分数完全相同:) - 3642
-
@AlekseyIzmailov 哈哈,我想知道统计上的一致性是什么?让我逐行加载 StackOverflow 数据集并返回给您:P
标签: java scala out-of-memory apache-commons fileutils