2009-06-14 19 views
5

Ich mache einen rechenintensiven Benchmark mit Mathematica und seiner J/Link Java-Schnittstelle.Mathematica & J/Link: Speicherbeschränkungen?

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

Die Mathematica-Funktion ReinstallJava übernimmt die Argumentbefehlszeile. Ich habe versucht,

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

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

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

+1

Wie m Ihr physikalischer Speicher ist auf Ihrer Maschine? –

+0

32 GB - sicherlich mehr als 320 MB –

Antwort

8

ReinstallJava dauert eine JVMArguments Option. Sie können es verwenden, wie so Heap-Größe passieren:

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 dieses eine Mal dachte in Verzweiflung, indem in C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\JLink\Kernel durch die Code-Lese Nachdem ich bemerkte es in Options[ReinstallJava] aufgeführt war es ziemlich offensichtlich schien ....)

3

Für Mac OS X-Benutzer ersetzen

ReinstallJava[JVMArguments -> "-Xmx64g"]; 

von

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