我有一个Scala数据处理工具,它失败了java.lang.OutOfMemoryError
异常。该工具需要对一个大型数据文件(我正在处理的文件超过700MB)进行一次传递,因此如果将整个文件存储在内存中会很方便。
我使用“scala”运行程序从命令行或Bash脚本运行该工具。如何为此增加JVM堆大小?我试过传递-Xmx1024m
,但它不承认这个论点。我正在使用每晚Scala 2.8.0(r18678)。
答案 0 :(得分:113)
您可以通过-J将选项传递给JVM。如,
scala -J-Xmx2g ...
答案 1 :(得分:25)
JAVA_OPTS环境变量用于指定传递给java命令的选项。有关详细信息,请参阅Scala manpage。
答案 2 :(得分:21)
根据Joe的建议,我查看了scala程序,它是一个用各种Scala特定参数调用java的Bash脚本。它允许通过JAVA_OPTS环境变量将额外的命令行参数传递给Java。所以你可以像这样增加堆大小:
JAVA_OPTS="-Xmx2g" scala classname arguments...
答案 3 :(得分:2)
修改JAVA_OPTS
。
答案 4 :(得分:0)
作为黑客,您可以编辑scala/bin/scala
文件以编辑java
命令的参数。不漂亮。