为什么Clear不掉已经不需要的内存?
更新日期:
文章目录
今天有人问,我有一个特别大的变量a
,这个变量a
占了很多内存,当我不需要再使用a
的时候,Clear[a]
为什么无法清除内存占用,于是有了本文。
初稿,无说明,只有源码
Clear["Global`*"] memory := Row[{"Memory Used:", MemoryInUse[]/1024^2., " MB"}]; memory
Memory Used: 25.1205 MB
a = RandomReal[1, 20000000]; memory
Memory Used: 178.308 MB
Clear[a]; memory
Memory Used: 178.311 MB
b = RandomReal[1, 20000000]; 1; memory
Memory Used: 330.903 MB
Clear[b]; memory
Memory Used: 178.318 MB
a = RandomReal[1, 5]; Clear[a]; %%
{0.793893, 0.318687, 0.115838, 0.380986, 0.785652}
$Pre = Function[expr, If[Last@Hold@expr === Null, expr; 1;, expr], HoldAll]; a = RandomReal[1, 20000000]; memory
Memory Used: 431.077 MB
Clear[a] memory
Memory Used: 278.673 MB
不确定没有副作用