Garbage collection of the PLAVA object store
Includes Bibliographical References.
This research investigates the implementation of suitable garbage collection schemes for a persistent store. The store that formed the basis for these experiments was the one developed for a Java Virtual Machine known as PLaVa, designed by Stephan Tjasink at the University of Cape Town [Tja99]. Two garbage collection schemes were implemented: semispace copying and a partitioned collection scheme due to Maheshwari and Liskov [M21h97, ML97]. Semispace copying was implemented to gain background knowledge of how the PLaVa store operates and how a simple garbage collection scheme could be developed for it. This work is then extended by implementing an incremental garbage collection scheme. Both implementations required modiﬁcations to the PLaVa store, in order to support semispace and partitioning algorithms. The partitioned collection scheme in particular required almost a complete re-implementation of the store. To evaluate the implemented garbage collection schemes, a synthetic application was developed, which allowed the fine tuning of speciﬁc parameters. This facilitated the evaluation of speciﬁc features and mechanisms used in both schemes, so that bottlenecks within the implementation could be determined. The evaluation results show that both garbage collection schemes are suitable for small to medium stores with reasonable amounts of idle time. Semispace copying overhead is linearly proportional to the amount of live data that exists during copying ( with store size having far less of an impact), but requires stores to be twice as large. Incremental garbage collection using the partitioned store method performs well under most store conﬁgurations, but becomes an ever increasing bottleneck as the number of inter-partition references increases. It is thus sensitive to the object placement scheme being used as well as the partition selection policy.