当RAM满时终止MATLAB代码

问题描述:

是否有任何MATLAB命令让我们在由于大量数据导致90%的RAM已满时终止MATLAB代码?当RAM满时终止MATLAB代码

我在问这个问题,因为我不想在MATLAB每次卡住并且计算机被挂起时重新启动计算机?

+0

是的,看看这个:http://uk.mathworks.com/matlabcentral/answers/59491-is-it-possible-to-set-watchdogs-memory-exec-time-in-matlab – GameOfThrows

+0

@GameOfThrows Add就像在这里一样,因为它在SO中很有用! –

据我所知,你不能“自动”这样做,如果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 

这将退出MATLAB时的内存约为2GB的RAM(该值在位,所以一定要注意,让自己的值时)

添加这个答案,因此,通过@Ander Biguri,答案的建议如果单纯基于this link

利用Matlab尝试(作为一个选项),可以监视内存的使用情况作为

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')) 

的memstats可以输出你的内存的当前统计数据,你可以在你的代码添加断点(在大手术的开始)来监控您的内存使用情况并决定是否要继续执行。

+0

这个(答案的第一部分)是否真的有效?我更多地将这个链接解释为一个功能请求。 – hbaderts