问题描述
在 python 中,如果我在玩 REPL,我可以使用 import gc; gc.collect()
强制垃圾收集。我如何使用 Elixir 的 iex
REPL 做同样的事情?
大变量绑定前的例子:
所以大约使用了 700M 的 RAM 和 300M 的交换空间。
将大数据绑定到变量 xx
之后(从数据库中提取 500 个时间序列,每个 7000 个结构):
所以现在大约使用 2.2G 和 500M 交换。现在将 xx 重新绑定到一些小东西:
但是使用的内存并没有真正改变。仍然是 2.2G RAM 和大约 500M 的交换。但是,如果我退出 IEX:
回到使用的内存不足 400M。因此,重新绑定的大数据绑定不会在 iex
内进行垃圾回收。我怎样才能强迫它这样做?
解决方法
这里有关于此的信息:https://erlang.org/doc/apps/erts/GarbageCollection.html
也许只是尝试这样做:
:erlang.garbage_collect()