Frage Mathematica & J / Link: Speicherbeschränkungen?


Ich mache einen rechenintensiven Benchmark mit Mathematica und seiner J / Link Java-Schnittstelle.

Der Benchmark wird zum Stillstand gebracht, wenn ein Speicherbedarf von etwa 320 MB erreicht wird, da dies die Grenze zu sein scheint und der Garbage Collector immer mehr Zeit benötigt und letztendlich scheitern wird.

Die Mathematica-Funktion Installieren Sie Java neu Nimmt die Argumentbefehlszeile. Ich habe es versucht

ReinstallJava[CommandLine -> "java -Xmx2000m ..."]

aber Mathematica scheint die Option -Xmx vollständig zu ignorieren.

Wie kann ich die Option -Xmx Speicher für mein Java-Programm einstellen? Woher kommt die Grenze von 320 MB? Jede Hilfe würde sehr geschätzt werden.


5
2018-06-14 14:26


Ursprung


Antworten:


ReinstallJava nimmt ein JVMArguments Möglichkeit. Sie können es verwenden, um die Heap-Größe wie folgt zu übergeben:

In[1]:= Needs["JLink`"]

In[2]:= Options[ReinstallJava]

Out[2]= {ClassPath -> Automatic, CommandLine -> Automatic, 
 JVMArguments -> None, ForceLaunch -> False, Default -> Automatic, 
 CreateExtraLinks -> Automatic, "Asynchronous" -> Automatic}

In[3]:= ?JVMArguments

JVMArguments is an option to InstallJava that
allows you to specify additional command-line
arguments passed to the Java virtual machine at
startup. The string you specify is added to the
command line used to launch Java. You can use this
option to specify properties with the standard -D
syntax, such as "-Dsome.property=true". This
option is not supported on Mac OSX. >>

In[4]:= LoadJavaClass["java.lang.Runtime"];

In[5]:= java`lang`Runtime`getRuntime[]@maxMemory[]

Out[5]= 238616576

In[6]:= ReinstallJava[JVMArguments -> "-Xmx64g"];

In[7]:= LoadJavaClass["java.lang.Runtime"];

In[8]:= java`lang`Runtime`getRuntime[]@maxMemory[]

Out[8]= 61084008448

(Ich habe es einmal in der Verzweiflung herausgefunden, indem ich den Code durchgelesen habe C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\JLink\Kernel. Nachdem es bemerkt wurde, war es in Options[ReinstallJava] es schien irgendwie offensichtlich ...)


8
2018-06-18 00:56



Für Mac OS X Benutzer ersetzen

ReinstallJava[JVMArguments -> "-Xmx64g"];

durch

ReinstallJava[CommandLine -> "java", JVMArguments -> "-Xmx64g"];

3
2017-07-11 15:13