Erlang’s data structures are all immutable. This vastly simplifies (and speeds up) almost all known GC algos. In case of Erlang, this allows for a soft-realtime GC with short & predictable pauses. As with all such things in software engineering there’s a catch. You loose a lot in throughput for wide classes of data processing algorithms. Does not seem to be an issue for real-time telecom that Erlang was originally designed for.