Welcome to the proceedings of ISMM'02, the Third ACM SIGPLAN International Symposium on Memory Management. The Symposium was held on June 20-21, in Berlin, Germany, and this volume contains the 17 papers that were presented. The ISMM conference series is dedicated to research in memory management, an increasingly important aspect of modern programming language implementations. Topics covered include garbage collection; explicit storage management; compile-time techniques to aid memory management; real-time GC; interactions of memory management with operating systems and hardware; and empirical measurements and visualizations of application memory behavior. ISMM'02 continues the tradition of the successful conference series established with the International Workshops on Memory Management held in 1996 (St. Malo, France) and 1995 (Kinross, Scotland), and the ISMM Symposia of 1998 (Vancouver, Canada) and 2000 (Minneapolis, USA). Proceedings of the IWMM workshops are available from Springer-Verlag (Lecture Notes in Computer Science no. 637 and no. 986), while the ISMM proceedings have been published by the Association for Computing Machinery.The call for papers for ISMM'02 solicited both short and full-length papers. The papers appearing here were selected by the program committee from 41 submissions. As program committee chairman, I am very proud of, impressed by, and grateful for the diligence and care with which the papers were considered by the committee. Each paper was read by at least three members of the committee and designated sub-reviewers, and judged on scientific merit, originality, relevance, and presentation. The referee reports were considered, and acceptance decisions made, in full-day meeting attended physically by half the committee, and virtually by half, using teleconferencing and web pages. The teleconference spanned 10 time zones.
Applying priorities to memory allocation
A novel approach of applying priorities to memory allocation is presented and it is shown how this can be used to enhance the robustness of real-time applications. The proposed mechanisms can also be used to increase performance of systems with ...
Reducing pause time of conservative collectors
This paper describes an incremental conservative garbage collector that significantly reduces pause time of an existing collector by Boehm et al. Like their collector, it is a true conservative collector that does not require compiler cooperation but ...
Automated discovery of scoped memory regions for real-time Java
Advances in operating systems and languages have brought the ideal of reasonably-bounded execution time closer to developers who need such assurances for real-time and embedded systems applications. Recently, extensions to the Java libraries and virtual ...
Understanding the connectivity of heap objects
Modern garbage collectors partition the set of heap objects to achieve the best performance. For example, generational garbage collectors partition objects by age and focus their efforts on the youngest objects. Partitioning by age works well for many ...
Visualising the train garbage collector
This paper presents a novel method for visualising an incremental garbage collector, based on the well-known Train algorithm, that generates concise snapshots of its state and informative graphs of its operation over time. To obtain these visualisations ...
Estimating the impact of heap liveness information on space consumption in Java
We study the potential impact of different kinds of liveness information on the space consumption of a program in a garbage collected environment, specifically for Java. The idea is to measure the time difference between the actual time an object is ...
Thread-local heaps for Java
We present a memory management scheme for Java based on thread-local heaps. Assuming most objects are created and used by a single thread, it is desirable to free the memory manager from redundant synchronization for thread-local objects. Therefore, in ...
Heap architectures for concurrent languages using message passing
We discuss alternative heap architectures for languages that rely on automatic memory management and implement concurrency through asynchronous message passing. We describe how interprocess communication and garbage collection happens in each ...
An algorithm for parallel incremental compaction
Garbage collectors of the mark-sweep family may suffer from memory fragmentation and require the use of compaction. Known compaction methods are expensive and work while program activity is stopped, so that compaction is often a major contributor to ...
Using passive object garbage collection algorithms for garbage collection of active objects
With the increasing use of active object systems, agents and concurrent object oriented languages like Java, the problem of garbage collection (GC) of unused resources has become more complex. Since active objects are autonomous computational agents, ...
Adaptive caching for demand prepaging
Demand prepaging was long ago proposed as a method for taking advantage of high disk bandwidths and avoiding long disk latencies by fetching, at each page fault, not only the demanded page but also other pages predicted to be used soon. Studies ...
An adaptive, region-based allocator for java
This paper introduces an adaptive, region-based allocator for Java. The basic idea is to allocate non-escaping objects in local regions, which are allocated and freed in conjunction with their associated stack frames. By releasing memory associated with ...
Dynamic memory management for programmable devices
The paper presents the design and implementation of a novel dynamic memory-management scheme for ESP---a language for programmable devices. The firmware for programmable devices has to be fast and reliable. To support high performance, ESP provides an ...
Accurate garbage collection in an uncooperative environment
Previous attempts at garbage collection in uncooperative environments have generally used conservative or mostly-conservative approaches. We describe a technique for doing fully type-accurate garbage collection in an uncooperative environment, using a "...
Software caching vs. prefetching
The performance gap between memory subsystem and high-performance processors is ever-increasing. Prefetching is one method to bridge this performance gap. Prefetching has been proposed for array-based and pointer applications, typically using software-...
Mostly lock-free malloc
Modern multithreaded applications, such as application servers and database engines, can severely stress the performance of user-level memory allocators like the ubiquitous malloc subsystem. Such allocators can prove to be a major scalability impediment ...
In or out?: putting write barriers in their place
In many garbage collected systems, the mutator performs a write barrier for every pointer update. Using generational garbage collectors, we study in depth three code placement options for remembered-set write barriers: inlined, out-of-line, and ...