文章目录

今天有人问,我有一个特别大的变量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

不确定没有副作用


文章目录