I. I n t r o d u c t i o nThis paper describes the design and implementation of a memory management system for Pegasus. Pegasus is a system that supports the implementation of programming environments and Applications are written in PML and are usually built on the services of the core library. One of the important features of Pegasus is that it supports multiple processes (or threads) in a shared address space.PML is derived from ML [M~srsS]~aCQsS]. It is a strongly typed, polymorphic language, with functions as "first class" values, and multiple processes which communicate via typed channels.Because it is a high-level language, PML requires extensive run-time support. One of the most crucial aspects of this support is the memory management system. Since it is inherently a heapbased language, the cost of memory management has a strong effect on the efficiency of any PML implementation. For example, because of the polymorphic type system of PML, functions always take exactly one argument; a function with multiple parameters takes a tuple object as its single argument. This means that most function applications involve memory allocation. Thus the speed of memory allocation and reclamation has a significant effect on the speed of PML programs.Furthermore, because Pegasus is used for interactive applications, it is important that memory operations complete in a bounded amount of time (i.e., that they are real-time).