Chapter

Transactions on High-Performance Embedded Architectures and Compilers I

Volume 4050 of the series Lecture Notes in Computer Science pp 74-94

GCH: Hints for Triggering Garbage Collections

  • Dries BuytaertAffiliated withELIS Department, Ghent University – HiPEAC member, St.-Pietersnieuwstraat 41, B-9000 Gent
  • , Kris VenstermansAffiliated withELIS Department, Ghent University – HiPEAC member, St.-Pietersnieuwstraat 41, B-9000 Gent
  • , Lieven EeckhoutAffiliated withELIS Department, Ghent University – HiPEAC member, St.-Pietersnieuwstraat 41, B-9000 Gent
  • , Koen De BosschereAffiliated withELIS Department, Ghent University – HiPEAC member, St.-Pietersnieuwstraat 41, B-9000 Gent

* Final gross prices may vary according to local VAT.

Get Access

Abstract

This paper shows that Appel-style garbage collectors often make suboptimal decisions both in terms of when and how to collect. We argue that garbage collection should be done when the amount of live bytes is low (in order to minimize the collection cost) and when the amount of dead objects is high (in order to maximize the available heap size after collection). In addition, we observe that Appel-style collectors sometimes trigger a nursery collection in cases where a full-heap collection would have been better.

Based on these observations, we propose garbage collection hints (GCH) which is a profile-directed method for guiding garbage collection. Off-line profiling is used to identify favorable collection points in the program code. In those favorable collection points, the garbage collector dynamically chooses between nursery and full-heap collections based on an analytical garbage collector cost-benefit model. By doing so, GCH guides the collector in terms of when and how to collect. Experimental results using the SPECjvm98 benchmarks and two generational garbage collectors show that substantial reductions can be obtained in garbage collection time (up to 29X) and that the overall execution time can be reduced by more than 10%. In addition, we also show that GCH reduces the maximum pause times and outperforms user-inserted forced garbage collections.