3 ms·
1. See: https://blog.stenmans.org/theBeamBook/#_the_tagging_scheme https://blog.stenmans.org/theBeamBook/#_the_tagging_scheme (search for "64 bytes") and code:
by ramchip 7y ago
1. See: https://blog.stenmans.org/theBeamBook/#_the_tagging_scheme https://blog.stenmans.org/theBeamBook/#_the_tagging_scheme (search for "64 bytes") and code: https://github.com/erlang/otp/blob/OTP-22.0.7/erts/emulator/beam/erl_binary.h#L165 https://github.com/erlang/otp/blob/OTP-22.0.7/erts/emulator/...
2. See: https://www.erlang-solutions.com/blog/erlang-garbage-collector.html https://www.erlang-solutions.com/blog/erlang-garbage-collect...
There's no thread-local GC, it's really per process. For instance a scheduler thread that's running a process and hits the need to do an expensive GC may delegate the task to a dirty scheduler (another type of thread, dedicated to long blocking tasks), and go back to running other processes in the meanwhile.
It's frequent for processes to move around between schedulers, they steal work from each other.