Implementation of Functional Languages

Volume 1467 of the series Lecture Notes in Computer Science pp 358-374


A compacting garbage collector for unidirectional heaps

  • Kent BoortzAffiliated withErlang Systems, Ericsson Software Technology
  • , Dan SahlinAffiliated withComputer Science Laboratory, Ericsson Telecom

* Final gross prices may vary according to local VAT.

Get Access


A unidirectional heap is a heap where all pointers go in one direction, e.g. from newer to older objects. For a strict functional language, such as Erlang, the heap may be arranged so that it is unidirectional. We here present a compacting garbage collection algorithm which utilizes the fact that a heap is unidirectional.

Only one memory space is used in our algorithm. In fact, no extra memory is used at all, not even any reserved bits within the cells. The algorithm is quite easy to extend to a variant of generational garbage collection.