The Journal of Functional and Logic Programming

Volume 2001

Published by EAPLS. Copyright 2001 EAPLS.

Article 5

----------------------------------------------------------------

Leveled Garbage Collection

Guanshan Tong and Michael J. O'Donnell

July 20, 2001

Abstract

Generational garbage collection (GGC) is one of the most popular garbage collection techniques. GGC gains a performance advantage by performing minor collections on the younger objects in the heap, reducing the number of major collections of the whole heap. A promotion policy determines when an object moves from the younger generation to the older. The design of GGC has been justified by the plausible assumption that many objects die very young, and a few live a very long time. But, attempts to tune the performance of GGC by adjusting the promotion policy have been disappointing - only the simplest immediate promotion policy has proved attractive. The success of GGC is probably due to simplicity and to avoiding scans of the whole heap, rather than to accurate lifetime predictions.
This paper presents Leveled Garbage Collection (LGC), a new algorithm that is not based on object ages. It uses a heap structure and collection scheme similar to those of generational garbage collectors, and has a non-age-based promotion policy that doesn't promote all of the live objects, but still guarantees ample free space immediately after each garbage collection. By tuning LGC's promotion policy, we can often improve on GGC with immediate promotion.
Performance comparisons show that LGC outperforms GGC with immediate promotion policy in many cases, while losing only slightly on cases favorable to immediate promotion. LGC has a substantial advantage when the heap fits in main memory, and an even greater advantage as the heap gets paged to disk.
The following versions of the article are available:

----------------------------------------------------------------

Self citation

    @article{jflp2001-05,
      author={Guanshan Tong and Michael J. O'Donnell},
      title={Leveled Garbage Collection},
      journal={Journal of Functional and Logic Programming},
      volume={2001},
      number={5},
      publisher={EAPLS},
      month={July},
      year={2001}
    }

----------------------------------------------------------------

*back to* Main page