如何在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
文件中还有许多其他有用的设置,可以以类似的方式查询/设置。