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.