2009-06-14 9 views
5

Estoy haciendo un benchmark intensivo en informática usando Mathematica y su interfaz J/Link Java.Mathematica & J/Link: ¿Restricciones de memoria?

La referencia se detiene si se alcanza una memoria de aproximadamente 320 MB, ya que este parece ser el límite y el recolector de basura necesita cada vez más tiempo y finalmente fallará.

La función Mathematica ReinstallJava toma el argumento línea de comando. Intenté hacer

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

pero Mathematica parece ignorar por completo la opción -Xmx.

¿Cómo puedo configurar la opción de memoria -Xmx para mi programa java? ¿De dónde viene el límite de 320 MB? Cualquier ayuda sería muy apreciada.

+1

Cómo m ¿Qué memoria física hay en su máquina? –

+0

32 GB - sin duda más de 320 MB –

Respuesta

8

ReinstallJava toma una opción JVMArguments. Se puede utilizar para pasar tamaño de la pila, así:

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 

(Una vez descubierto esto en su desesperación por la lectura a través del código en C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\JLink\Kernel Después de notar que fue incluida en Options[ReinstallJava] parecía bastante obvio ....)

3

Para los usuarios de Mac OS X, reemplace

ReinstallJava[JVMArguments -> "-Xmx64g"]; 

por

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