RAM已满时中止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

由于数据量巨大,当90%的RAM已满时,是否有任何MATLAB命令允许我们中止MATLAB代码


我问这个问题是因为我不想在每次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中很有用!这个(答案的第一部分)真的有效吗?我把这个链接更多地解释为一个功能请求。