|
Modeling, Analysis and Throughput Optimization
of a Generational Garbage Collector
January 20, 2009 - The Java platform is used for a wide variety of applications, from small applets on desktops to web services on large servers. Java's popularity is due, in part, to its automatic memory management capability. That is, the programmer does not need to explicitly de-allocate objects, and the system automatically detects and recycles the space occupied by the unreferenced objects (garbage). One of the garbage collection (GC) policies used in Sun's HotSpot Java Virtual Machine is known as the generational throughput collector. It was designed to have a large throughput - fraction of time spent on application's work rather than on garbage collection. This paper derives an analytical expression for the throughput of this collector and studies its dependence on the key tunable parameters. Based on the derived throughput model, a practical algorithm, ThruMax, is proposed for tuning the collector's parameters so as to formally maximize its throughput. This algorithm was implemented as an optional feature in an early release of JDK 7, and the algorithm's performance was evaluated for various settings of the SPECjbb2005 workload. A consistent improvement in throughput was demonstrated when the ThruMax algorithm was enabled in JDK 7. The ThruMax algorithm is scheduled to become a part of Sun's HotSpot Java Virtual Machine in 2009. | |||||||||||||||||||||||