Managed run-time environments such as Java and .NET are now used for a wide variety of applications. They provide a number of advantages to application developers, including reduced application development time, safer code, and portability. A major component of the run-time systems for these environments is the garbage collector, which relieves application developers from having to manage memory explicitly. While garbage collectors should provide good throughput and short response times with low space overheads, most modern garbage collectors that meet the first two requirements tend to impose a significant space overhead.
Copying garbage collection, one of many garbage collection techniques, provides a number of advantages over other collection methods including cheap allocation and prevention of fragmentation. However, the space overhead of previous copying techniques have been particularly high. In this thesis, we first perform a detailed study of previous copying collection techniques, including generational copying collection and the Train collector. We identify limitations of the Train collector that cause it to perform poorly especially in the presence of large, cyclic data structures. We describe a new copying garbage collection technique, Mark-Copy, that extends generational copying collection, and overcomes the factor-of-two space overheads of a regular copying collector. Additionally, it overcomes some of the limitations of the Train collector. We show that Mark-Copy can provide high throughput while running in limited amounts of memory. We then present MC 2 , a collector that extends Mark-Copy and provides high throughput and short pause times while running with low space overhead, thus making it suitable for applications running on memory-constrained devices. These qualities also make MC 2 attractive for other environments, including desktops and servers.
Index Terms
- High-performance copying garbage collection with low space overhead
Recommendations
Copying Garbage Collection for the WAM: To Mark or Not to Mark?
ICLP '02: Proceedings of the 18th International Conference on Logic ProgrammingGarbage collection by copying is becoming more and more popular for Prolog. Copying requires a marking phase in order to be safe: safeness means that the to-space is guaranteed not to overflow. However, some systems use a copying garbage collector ...
Age-based garbage collection
Modern generational garbage collectors look for garbage among the young objects, because they have high mortality; however, these objects include the very youngest objects, which clearly are still live. We introduce new garbage collection algorithms, ...
Incremental copying garbage collection for WAM-based Prolog systems
The design and implementation of an incremental copying heap garbage collector for WAM-based Prolog systems is presented. Its heap layout consists of a number of equal-sized blocks. Other changes to the standard WAM allow these blocks to be garbage ...