[英]Does BEAM (the Erlang VM) do garbage collection in parallel?
我正在学习Elixir,并希望确定我理解垃圾收集在Erlang VM中是如何工作的。
我的理解是这样的:
这个对吗?
收集垃圾。 当用其他语言收集垃圾时,整个系统必须在垃圾收集器运行时停止。 如果你的计算机程序应该运行一次,写一些输出,然后退出,这种方法是完全正确的。 但是在长时间运行的应用程序中,例如桌面,移动或服务器程序,此策略偶尔会导致UI冻结和响应时间变慢。 另一方面,Erlang程序可以有数千个独立堆,这些堆是单独垃圾收集的; 这样,垃圾收集的性能损失会随着时间的推移而扩散,因此长时间运行的应用程序不会在垃圾收集器运行时不时地神秘地停止响应。
所以我相信erlang垃圾会同时收集,也就是说,各种垃圾堆是彼此独立的垃圾收集。 是否有任何并行化取决于您的节点是否在多个核心上运行,但如果是,那么垃圾收集是并行完成的,是的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.