2009-06-14 8 views
5

저는 Mathematica와 J/Link Java 인터페이스를 사용하여 컴퓨팅 집약적 벤치 마크를하고 있습니다.Mathematica & J/Link : 메모리 제약?

약 320MB의 메모리 사용량에 도달하면 벤치마킹이 중단됩니다. 이는 제한 사항 인 것 같아서 가비지 수집기가 점점 더 많은 시간을 필요로하고 결국 실패 할 것이기 때문입니다.

Mathematica 함수 ReinstallJava은 인수 명령 줄을 사용합니다. 나는하려고 시도했다.

그러나 Mathematica는 -Xmx 옵션을 완전히 무시한 것처럼 보인다.

내 Java 프로그램에 대해 -Xmx 메모리 옵션을 설정하려면 어떻게해야합니까? 320 MB의 한계는 어디에서 비롯됩니까? 어떤 도움이라도 대단히 감사하겠습니다.

+1

어떻게 m 교체 실제 메모리가 시스템에 있습니까? –

+0

32GB - 320MB 이상 –

답변

8

ReinstallJavaJVMArguments 옵션을 취합니다. 당신과 같이 힙 크기를 전달하는 데 사용할 수 있습니다 :

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 

는 (I 번 C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\JLink\Kernel의 코드를 읽고 절망이 알아 낸이 가지 분명한 듯이 Options[ReinstallJava]에 상장되었습니다 몰래 후 ....)

3
맥 OS X 사용자의 경우

,

ReinstallJava[JVMArguments -> "-Xmx64g"]; 

에 의해

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