【发布时间】:2015-03-10 20:53:03
【问题描述】:
我有一个外部程序可以生成我需要的一些数据。通常,我将其输出重定向到一个文件,然后从我的 Scala 应用程序中读取它,例如
app.exe > 输出.data
现在,我想整合流程,所以我做了
val stream = "app.exe" lineStream
stream foreach { line => doWork(_) }
不幸的是,一段时间后我得到了 GC 开销 异常。这个app.exe 可能会生成非常大的输出文件,例如超过 100MB。所以我认为在流式传输期间,Scala 一直在创建/销毁 line 字符串实例数千次,并导致开销。
我知道我可以调整 JVM 变量以增加 GC 开销限制。但我正在寻找一种不需要创建很多小的line 实例的方法。
【问题讨论】:
-
GC overheat到底是什么? -
我想你的意思是GC overhead。
-
我更喜欢 GC 过热 :-)