Re:Erlang Garbage Collector
by aidenn0 on Friday December 01, 2017 @01:56AM
(#15822416)
Go has traded throughput for latency. The throughput of a semispace copying collector is very high for most workloads, but can suffer latency issues. There is literally zero cost to collecting garbage in the nursery with the algorithm described in TFA (a nursery collection has a cost proportional only to the live data), and the cost of allocating in the nursery is just incrementing a single value. However eventually you need to collect the entire heap, and it's still proportional to the size of the live data, which is usually the majority of the heap (since you've already collected the nursery at that point).
[ Parent
| on HN ]
Sorry, I'm confused. Is Go's GC the semispaced copying collector or the TFA? Or neither? Or both?
TFA == "The Fine Article" so refers specifically to the Erlang Garbage Collector.
"Semispace" is one term to refer to the family of garbage collectors that Erlang's derives from. The heap is divided into two spaces, hence "semispace"
So Go's GC is neither. Go's gc is tuned for lower latencies, and that tends to rule out moving collectors (there are ways of having incremental moving collectors, but they complicate the runtime a bit).