Apache Commons を使用して、1.2GB のファイルを 1 行ずつ反復処理しようとしていますFileUtils.lineIterator。LineIteratorただし、 が電話hasNext()をかけるとすぐにjava.lang.OutOfMemoryError: Java heap space. 私はすでに1GJavaヒープに割り当てています。
ここで何が間違っていますか?いくつかのドキュメントを読んだ後、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()
}
ここであなたの助けをありがとう!