Many garbage collection algorithms have been proposed, but few address the special needs of long-running server programs. Server applications usually run for years and spawn many threads, so they create and discard ...Many garbage collection algorithms have been proposed, but few address the special needs of long-running server programs. Server applications usually run for years and spawn many threads, so they create and discard thousands of objects. Therefore, efficient garbage collection is especially important for those applications. This paper presents a class-based garbage collector for object-oriented programming environments that classifies objects by their types to achieve better gradualness. Grouping objects of the same type into a group, with a limited type-lock, a mutator cache and the lease protocol will reduce memory fragmentation, which is especially important for the efficiency of long-running server applications. This class-based collector partitions the heap space by type, which provides better concurrency than the traditional mark-sweep collector, and its reusable garbaged object pool also reduces the object allocation overhead. This paper also discusses the implementation details, such as the mutator cache and the lease protocol, and techniques to achieve better accuracy.展开更多
基金the National High- Tech Research andDevelopm ent Program of China(No. 30 6 - 0 1- 0 3- 11- 9)
文摘Many garbage collection algorithms have been proposed, but few address the special needs of long-running server programs. Server applications usually run for years and spawn many threads, so they create and discard thousands of objects. Therefore, efficient garbage collection is especially important for those applications. This paper presents a class-based garbage collector for object-oriented programming environments that classifies objects by their types to achieve better gradualness. Grouping objects of the same type into a group, with a limited type-lock, a mutator cache and the lease protocol will reduce memory fragmentation, which is especially important for the efficiency of long-running server applications. This class-based collector partitions the heap space by type, which provides better concurrency than the traditional mark-sweep collector, and its reusable garbaged object pool also reduces the object allocation overhead. This paper also discusses the implementation details, such as the mutator cache and the lease protocol, and techniques to achieve better accuracy.