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

时间:2016-03-13 11:04:44

标签: java matlab

我想通过Matlab命令直接增加Java堆大小,因为我需要动态控制,具体取决于环境。 我知道线程How do I increase the heap space for the Java VM in MATLAB 6.0 (R12) and later versions他们说使用java.opts文件,但我想直接用Matlab提示做同样的事情。 有很多线程只能通过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堆大小?

1 个答案:

答案 0 :(得分:3)

有几种方法可以通过编程方式更改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

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

JavaMemHeapMax=I2048

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