如何在Matlab中直接增加Java堆大小?

我想通过Matlab命令直接增加Java堆大小,因为我需要动态控制,具体取决于环境。 我知道线程如何在MATLAB 6.0(R12)及更高版本中增加Java VM的堆空间 ,他们说这些版本使用java.opts文件,但我想直接用Matlab提示做同样的事情。 有很multithreading只能通过Matlab GUI或文件来改变参数,比如Matlab的博客文章Controlling the Java Heap Size 。

我有兴趣动态增加这些参数

 heapSizeMemoryDefault = 521142272; % 512 MB assert(java.lang.Runtime.getRuntime.maxMemory > heapSizeMemoryDefault*2, 'Java heap size too small'); runTimeMemoryDefault = 90116624; % about 890 MB assert(java.lang.Runtime.getRuntime.freeMemory > 90116624*2, 'Java free memory size too small'); 

如何在Matlab 2016a中直接增加Java堆大小?

有几种方法可以通过编程方式更改Java堆大小,但所有都需要重新启动Matlab,因为堆大小是在启动时分配的。

要从首选项文件中查询最大堆大小设置

 oldMaxHeapSize = com.mathworks.services.Prefs.getIntegerPref('JavaMemHeapMax'); % MB 

零结果表示尚未在首选项文件中设置,这会导致分配一些默认大小。

要在首选项文件中设置最大堆大小设置

 com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB 

记得重新启动Matlab,例如使用quit()结束当前进程。 测试并在Matlab上工作> = R2013b。

请注意,这些命令基本上只是编辑matlab.prf文件的编程方式,位于Windows安装中(使用正确的Matlab版本) C:\Users\%USERNAME%\AppData\Roaming\MathWorks\MATLAB\R2013b\matlab.prf

例如,在这种情况下,我们正在编辑以下设置(您可以在执行命令后打开文件以检查是否设置了新值)

 JavaMemHeapMax=I2048 

文件中还有许多其他有用的设置,可以以类似的方式查询/设置。