当RAM为FULL时,中止MATLAB代码

时间:2015-10-19 09:33:53

标签: matlab memory

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

我问这个问题,因为每次MATLAB卡住和电脑被挂起时我都不想重启电脑?

2 个答案:

答案 0 :(得分:2)

据我所知,你不能“自动”这样做,如果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时,这将退出MATLAB(该值以位为单位,因此请确保在设置自己的值时注意)

答案 1 :(得分:2)

根据@Ander Biguri的建议将此答案添加到SO中,答案纯粹基于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可以输出内存的当前统计信息,您可以在代码中添加断点(在主要操作开始时)以监视内存使用情况并决定是否要继续执行。