Document Type

Technical Report

Publication Date






Technical Report Number



Language support of dynamic storage management simplifies the application programming task immensely. As a result, dynamic storage allocation and garbage collection have become common in general purpose computing. Garbage collection research has led to the development of algorithms for locating program memory that is no longer in use and returning the unused memory to the run-time system for late use by the program. While many programming languages have adopted automatic memory reclamation features, this has not been the trend in Real-Time systems. Many garbage collection methods involve some form of marking the objects in memory. This marking requires time proportional to the size of the head to complete. As a result, the predictability constraints of Real-Time are often not satisfied by such approaches. In this thesis, we present an analysis of several approaches for program garbage collection. We examine two approximate collection strategies (Reference Counting and Contamination Garbage Collection) and one complete collection approach (Mark and Sweep Garbage Collection). Additionally, we analyze the relative success of each approach for meeting the demands of Real-Time computing. In addition, we present an algorithm that attempts to classify object types as good candidates for reference counting. Our approach is conservative and uses static analysis of an application's type system. Our analysis of these three collection strategies leads to the observation that there could be benefits to using multiple garbage collectors in parallel. Consequently we address challenges associated with using multiple garbage collectors in one application.


Permanent URL: