繁体   English   中英

BEAM(Erlang VM)是否并行进行垃圾收集?

[英]Does BEAM (the Erlang VM) do garbage collection in parallel?

我正在学习Elixir,并希望确定我理解垃圾收集在Erlang VM中是如何工作的。

我的理解是这样的:

  • 每个VM级进程都有自己的堆
  • 如果该堆在它终止之前没有填满,那么它将被丢弃,并且不需要GC
  • 填充的堆是单独, 并行收集的垃圾,因此GC不会“停止世界”,只是一个过程

这个对吗?

收集垃圾。 当用其他语言收集垃圾时,整个系统必须在垃圾收集器运行时停止。 如果你的计算机程序应该运行一次,写一些输出,然后退出,这种方法是完全正确的。 但是在长时间运行的应用程序中,例如桌面,移动或服务器程序,此策略偶尔会导致UI冻结和响应时间变慢。 另一方面,Erlang程序可以有数千个独立堆,这些堆是单独垃圾收集的; 这样,垃圾收集的性能损失会随着时间的推移而扩散,因此长时间运行的应用程序不会在垃圾收集器运行时不时地神秘地停止响应。

埃文米勒,流行的芝加哥老板框架的创造者。

所以我相信erlang垃圾会同时收集,也就是说,各种垃圾堆是彼此独立的垃圾收集。 是否有任何并行化取决于您的节点是否在多个核心上运行,但如果是,那么垃圾收集是并行完成的,是的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM