Memory Mathematica中的子核内存控制

Memory Mathematica中的子核内存控制,memory,wolfram-mathematica,parallel-processing,mathematica-8,Memory,Wolfram Mathematica,Parallel Processing,Mathematica 8,我有一个类似的问题: 我对这样的东西感兴趣: ParallelTable[F[i], {i, 0, 14.9, 0.001}] 其中,F[i]是一个复杂的数值积分(我还没有找到一种简单的方法来重现这个问题,而不需要对积分进行页面填充定义) 我的问题是子内核在内存中爆炸,如果我不让机器交换,我必须停止计算 但即使我停止了计算,内核也不会释放它们占用的内存 ClearSystemCache[] 我甚至试过 ParallelEvaluate[ClearSystemCache[]] 但是 停留

我有一个类似的问题:

我对这样的东西感兴趣:

ParallelTable[F[i], {i, 0, 14.9, 0.001}]
其中,
F[i]
是一个复杂的数值积分(我还没有找到一种简单的方法来重现这个问题,而不需要对积分进行页面填充定义)

我的问题是子内核在内存中爆炸,如果我不让机器交换,我必须停止计算

但即使我停止了计算,内核也不会释放它们占用的内存

ClearSystemCache[] 
我甚至试过

ParallelEvaluate[ClearSystemCache[]]
但是

停留在

{823185944, 833146832, 812429208, 840150336, 850057024, 834441704, 
847068768, 850424224}
似乎所有的内存控制都只对主内核有效? 到目前为止,唯一的办法是关闭所有内核并重新启动它们

我真的希望有一些解决办法。。。
非常感谢。

内存控制适用于内核,其中对涉及函数的控制表达式进行评估,如
MemoryConstrained
MemoryInUse
Clear
Unset
Remove
$historyllength
ClearSystemCache
等。在您的情况下,内存泄漏的来源似乎不是由于(顺便说一句,感谢链接!)

您是否尝试评估
$HistoryLength=0代码?如果你还没有,我强烈建议你试试

由于您使用的是数值积分函数,我建议您也尝试优化它们的使用。例如,如果使用
NDSolve
进行数值积分,并且只需要一组有限的计算点(甚至只需要一个点),则应该这样做。在某些情况下,这可以显著减少内存使用!你也可以。

我(是吗?)有着完全相同的问题,几乎是逐字逐句。我只是幸运地在问题积分中添加了选项:

Method-> {"GlobalAdaptive", "SymbolicProcessing"->False}

如果你愿意,你可以选择任何其他的方法,但我在最后几分钟内就成功地做到了这一点。而且,我过去经常遇到的许多令人讨厌的不一致性都消失了,集成进行得更快

因此,我现在将我的问题提交给wolfram支持部门,似乎NIntegrate确实可能存在内存泄漏。我可以用ClearSystemCache在我的计算机上处理这个漏洞,但这对于并行计算不起作用,因为ClearSystemCache不会影响由并行计算启动的子内核。我会更新我得到的任何进一步的信息。@Michael如果是的话,在所有子内核中计算
ClearSystemCache[]
可能会有帮助吗?
Method-> {"GlobalAdaptive", "SymbolicProcessing"->False}