CS690M: Advanced Dynamic Memory Management

Fall 2003
Antony Hosking

Automatic dynamic memory management ("garbage collection" or GC) is an increasingly important feature of modern programming environments, enhancing the composability of software components by devolving responsibility for management of storage away from individual programmers, to detect automatically when allocated storage can be reclaimed, and recycling that storage for further allocation.  Automatic memory management avoids the problems of manual memory management, which is (programmer-)time consuming and error-prone, and also complicates the interfaces between components (subroutines, libraries, modules, classes) by exposing memory management details ("who is responsible for recycling this memory?").

Interest in GC has recently intensified with the rise in enterprise application development for the Java and .NET platforms, and the arrival of programming language variants such as real-time Java intended for real-time and embedded applications.  No longer is GC confined to small-scale applications written in obscure programming languages running solely on desktops.  Instead, GC impacts the performance and cost of key large-scale applications running on high-end servers, as well as applications targeting an ever-expanding range of embedded devices and real-time controllers.  As a result, recent work on GC has proliferated.

This course will be structured as a reading seminar on memory management.  Participants will read and discuss approximately 2-3 papers per week, drawn from the recent literature. One or more participants will take responsibility for leading and focusing the group discussion of each paper.  Participants will also be expected to complete a term project resulting in an oral class presentation and a brief written report.  Projects may include a concise survey of the state-of-the-art in GC (along the lines of articles appearing in ACM Computing Surveys), synthesis of new techniques for memory management (algorithms or implementations), or theoretical and/or empirical studies of algorithms and implementations.  Participants will be encouraged to make use of available implementations of prototype systems (such as the Boehm-Demers-Weiser garbage collector, the Jikes Research Virtual Machine for Java, the Open Runtime Platform, and the Open Virtual Machine).  Portions of the course will examine the memory management aspects of these prototypes in some detail.