RAM已满时中止MATLAB代码
由于数据量巨大,当90%的RAM已满时,是否有任何MATLAB命令允许我们中止MATLAB代码RAM已满时中止MATLAB代码,matlab,memory,Matlab,Memory,由于数据量巨大,当90%的RAM已满时,是否有任何MATLAB命令允许我们中止MATLAB代码 我问这个问题是因为我不想在每次MATLAB被卡住并且计算机被挂起时重新启动计算机?据我所知,您不能“自动”这样做,如果MATLAB挂起,它就会挂起 但是,在代码中,您始终可以在某个地方(例如,在内存密集的迭代函数中)添加内存检查 如果你这样做 maxmem=2e10; %about 2GB of RAM %% //this inside the memory heavy code mem=memor
我问这个问题是因为我不想在每次MATLAB被卡住并且计算机被挂起时重新启动计算机?据我所知,您不能“自动”这样做,如果MATLAB挂起,它就会挂起 但是,在代码中,您始终可以在某个地方(例如,在内存密集的迭代函数中)添加内存检查 如果你这样做
maxmem=2e10; %about 2GB of RAM
%% //this inside the memory heavy code
mem=memory;
if mem.MemUsedMATLAB>maxmem
exit; % // or some other thing you may want to do
end
当内存约为2GB的RAM时(该值以位为单位,因此请务必注意,在输入自己的值时)将此答案添加到@Ander Biguri建议的结果中,如果答案完全基于 使用Matlab try(作为一个选项),您可以根据需要监控内存使用情况
tryOptions.watchdog.virtualAddressSpace = 7e9 ; %//7GB Mem
tryOptions.watchdog.execTime = 1800 ; %//Execution Time 1800 seconds
try tryOptions
...
catch %// use the try and catch combo to monitor your memory usage and kill process if you need to.
其他可能有帮助的有用工具:
T = evalc('feature(''memstats'')') ;
str2mat(regexp(T, '(?<=Use:\s*)\d+', 'match'))
T=evalc('feature('memstats'));
str2mat(regexp(T),(?是的,看看这个:@GameOfThrows在这里添加它作为asnwer,因为它在SO中很有用!这个(答案的第一部分)真的有效吗?我把这个链接更多地解释为一个功能请求。