Java Akka 上的扫描器内存泄漏

Java Memory Leak with Scanner on Akka

橙色是 "OldGen",绿色是 "Eden Space",蓝色是 "survivor space"。我使用 YourKit 来做这个分析。这就是我写文件读取代码的方式:

val inputStream = new FileInputStream("E:\Allen\DataScience\train\train.csv")
val sc = new Scanner(inputStream, "UTF-8")

var counter = 0

while (sc.hasNextLine) {

  rowActors(counter % 20) ! Row(sc.nextLine())

  counter += 1
}

sc.close()
inputStream.close()

如果被Scanner占用的话,好像占用了一大块内存。但是,我的原始文件只有 5 GB。我想知道我是否对文件读取过程处理不当!如果没有,我应该如何读入和处理我的文件?我现在对垃圾收集感到非常沮丧。

Akka-stream 为并行处理文件提供了更安全的方式:https://github.com/typesafehub/activator-akka-stream-scala/blob/master/src/main/scala/sample/stream/GroupLogFile.scala