It is.<div><br></div><div>But rather then "mark-and-sweep" that is hinted at here, erlang runtime system uses a copying collector.</div><div>Without going in to gritty details, anything that can be reached from a rootset (stack, registers and a few other things) are live data and copied to a new heap. The old heap is then deallocated. </div>
<div><br></div><div>// Björn-Egil<br><br><div class="gmail_quote">2011/10/20 Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@gmail.com">jesper.louis.andersen@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Thu, Oct 20, 2011 at 18:38, Matthew Sackman <<a href="mailto:matthew@wellquite.org">matthew@wellquite.org</a>> wrote:<br>
><br>
> I don't know how Erlang does it, but one approach is that from all your<br>
> processes stacks, traverse all pointers and mark all found terms as<br>
> "visited" (transitively). Then, work through everything in the heap and<br>
> anything not marked "visited" can be reclaimed.<br>
><br>
> With erlang's heap-per-process memory model and plus generational GC, I<br>
> could imagine this would work fairly well, but I've no idea whether this<br>
> is actually what's used.<br>
><br>
<br>
</div>This is what is used, to my knowledge.<br>
<font color="#888888"><br>
--<br>
J.<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br></div>