大型NIF资源的后期垃圾收集

时间:2019-06-20 10:04:55

标签: erlang-nif

我已经使用带有工作垃圾收集资源的NIF进行了编写。虽然,GC触发得很晚,这有时会使机器有时会耗尽内存,而此时它应该能够释放不再引用的资源。

每个资源都由第三方C ++ lib分配大约1 GiB的内存。我的理论是,BEAM不了解分配了多少内存,这使得资源被垃圾回收的时间较晚。如果是这样,我如何帮助BEAM理解这一点?

有没有一种方法可以检查引用计数器,从而可以验证Erlang代码没有意外引用?

作为一种解决方法,我从Erlang代码中调用了一个自定义释放NIF函数,当希望没有其他进程仍在使用它时,它将释放大部分已分配的内存。

0 个答案:

没有答案