当 parfor 中的 MATLAB 函数产生警告时,如何避免内存泄漏?

How to avoid memory leaks when MATLAB function inside parfor generates warning?

我将 matlab R2015b 用于带有本地 parpool 的 Win Server 2012 OS。当 parfor-loop 中的函数生成警告时,我在本地工作人员上有内存泄漏。 parfor 循环结束后也不会释放内存。示例:

x = rand(78, 1);
for j = 1:100
    parfor i = 1:1000
        [~, z] = kpsstest(x);
    end
end

函数 kpsstest 生成警告:

警告:下面列出的临界值测试统计#1: 报告的最大 p 值 = 0.100。 在 kpsstest>getStat(第 632 行) 在 kpsstest 中(第 291 行)

即使我使用构造函数,worker 也会发生内存泄漏:

   warning('off', 'econ:kpsstest:StatTooSmall');
   pctRunOnAll warning('off', 'econ:kpsstest:StatTooSmall')

启动工人的内存:

执行代码后内存:

parfor内部函数报错时如何避免内存泄漏?

谢谢。

好吧,这可能不是最干净的方法,但您可以关闭并行池,请参阅 here

这个问题是这个 bug report 的主题。如果您能够升级到 R2017a,那是最简单的解决方法。