2009-09-17 8 views
43

Ich habe ein Scala-Datenverarbeitungswerkzeug, das mit einer Ausnahme java.lang.OutOfMemoryError ausfällt. Das Tool muss einige Pässe über eine große Datendatei ausführen (die, an der ich gerade arbeite, ist über 700 MB), also wäre es praktisch, wenn das gesamte Ding im Speicher abgelegt werden könnte.Erhöhen Sie die JVM-Heap-Größe für Scala?

Ich führe das Werkzeug von der Befehlszeile oder von einem Bash-Skript mit der "Scala" Runner. Wie erhöhe ich die JVM-Heap-Größe dafür? Ich habe versucht, -Xmx1024m zu übergeben, aber es erkennt dieses Argument nicht. Ich benutze einen nächtlichen Build von Scala 2.8.0 (r18678).

Antwort

24

Die Umgebungsvariable JAVA_OPTS verwendet wird, um die Optionen der Java-Befehl übergeben zu spezifizieren. Einzelheiten finden Sie unter Scala manpage.

0

Als Hack können Sie die Datei scala/bin/scala bearbeiten, um die Parameter für den Befehl java zu bearbeiten. Nicht hübsch.

+1

Das ... könnte funktionieren. –

+0

Ja, aber ich warte auf jemand anderen zu antworten. Ich möchte es auch wissen ... – Joe

2

Bearbeiten JAVA_OPTS.

21

Basierend auf Joes Vorschlag habe ich mir das scala-Programm angesehen, das ein Bash-Skript ist, das Java mit verschiedenen Scala-spezifischen Argumenten aufruft. Dadurch können zusätzliche Befehlszeilenargumente über die Umgebungsvariable JAVA_OPTS an Java übergeben werden. So können Sie die Heap-Größe wie folgt erhöhen:

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

Sie können Optionen über -J an die JVM übergeben. Zum Beispiel

scala -J-Xmx2g ... 
+0

Vielen Dank! +1 – gd1

+0

Ich benutze das auch, danke! – Benoit

+0

Schnelle und einfache Lösung, danke! Ich frage mich, warum die Manpage dies nicht zeigt? – markc

Verwandte Themen