簡體   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