The memory storage requirements of complex programs are extremely difficult to manage correctly by hand. A single error may lead to indeterminate and inexplicable program crashes. Worse still, failures are often unrepeatable and may surface only long after the program has been delivered to the customer. The eradication of memory errors typically consumes a substantial amount of development time. And yet the answer is relatively easy - garbage collection - removing the clutter of memory management from module interfaces which then frees the programmer to concentrate on the problem at hand rather than low-level book-keeping details.
For this reason, most modern object-oriented languages such as Smalltalk, Eiffel, Java and Dylan, are supported by garbage collection. Garbage collecting libraries are even available for such uncooperative languages as C and C++. This book considers how dynamic memory can be recycled automatically to reduce the risk of memory management errors. There is an abundant but disparate literature on the subject, largely confined to research papers. This book sets out to pool this experience in a single accessible and unified framework.
Each of the most important algorithms is explained in detail, often with illustrations of its characteristic features and animations of its use. Techniques are described and compared for declarative and imperative programming styles, for sequential, concurrent and distributed architectures.
For professionals developing programs from simple software tools to complex systems, as well as for researchers and students working in compiler construction, functional, logic and object-oriented programming and design, this book will provide not only a clear introduction but also a convenient reference source for modern garbage collection techniques.
Copyright © 1999 · Richard Jones