2009-09-17 200 views
43

我有一個Scala數據處理工具,它與java.lang.OutOfMemoryError例外失敗。該工具需要通過一個大型數據文件(我正在使用的文件大小超過700MB)進行兩次傳遞,因此如果整個事件可以存儲在內存中將會很方便。增加Scala的JVM堆大小?

我使用「scala」runner從命令行或Bash腳本運行該工具。如何爲此增加JVM堆大小?我試過傳球-Xmx1024m,但它不承認這個說法。我正在使用每晚構建的Scala 2.8.0(r18678)。

回答

24

JAVA_OPTS環境變量用於指定傳遞給java命令的選項。有關詳細信息,請參閱Scala manpage

0

作爲一種破解,您可以編輯scala/bin/scala文件來編輯java命令的參數。不漂亮。

+1

這......可以工作。 – 2009-09-17 21:21:34

+0

是的,但我在等待別人回答。我也想知道... – Joe 2009-09-17 21:32:07

2

編輯JAVA_OPTS

21

根據Joe的建議,我查看了scala程序,該程序是一個Bash腳本,它使用各種Scala特定參數調用java。它允許通過JAVA_OPTS環境變量將額外的命令行參數傳遞給Java。因此,您可以像這樣增加堆大小:

JAVA_OPTS="-Xmx2g" scala classname arguments... 
100

您可以通過-J將選項傳遞給JVM。例如,

scala -J-Xmx2g ... 
+0

非常感謝! +1 – gd1 2013-01-02 23:20:28

+0

我也在使用,謝謝! – Benoit 2013-08-23 08:45:44

+0

快速簡單的解決方案,謝謝!我想知道爲什麼手冊頁不顯示這個? – markc 2016-09-08 16:18:12