我想通过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堆大小?
答案 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
文件中还有很多其他有用的设置,可以用类似的方式查询/设置。