Modern software places increasing reliance on dynamic memory allocation, but its direct management is not only notoriously error-prone. Garbage collection eliminates many of these bugs. This reference presents each of the most important algorithms in detail, often with illustrations of its characteristic features and animations of its use.
{"itemData":[{"priceBreaksMAP":null,"buyingPrice":96.23,"ASIN":"0471941484","isPreorder":0},{"priceBreaksMAP":null,"buyingPrice":58.26,"ASIN":"1420082795","isPreorder":0},{"priceBreaksMAP":null,"buyingPrice":53.3,"ASIN":"1558609105","isPreorder":0}],"shippingId":"0471941484::tzHzRdPGbMCTwiDbqTF5wmcplYeGLEEVO2VR7dVCUuzVrHH9Ey3MLQEje0EIo8KaP9B4MForJRIxhPgb7blb9jQThLD9GoBZPCpe3VTNCTA%3D,1420082795::bBc%2F7QifL2IA17%2BxwbujkbVbbJGCsMX0E5Of0aR%2Fk9wHrJGbqdxefUE8W9O%2BBttSn4jwqZomqlHmhlEnP%2BXRXH7JJm%2B11PZ%2B2GbIawlk8l0%3D,1558609105::UclHDEdlBTUc28UnH4ATdkRM%2F7Z2iDkWckX1%2F9ISOr6rhkqL6OxAanzgAdM2ZiZUfRR%2Ftkc0AZQ0PRuZhAFQ3QX00bNpqt27zDMpkV4uGHzm1%2FB%2Fc1qj3A%3D%3D","sprites":{"addToWishlist":["wl_one","wl_two","wl_three"],"addToCart":["s_addToCart","s_addBothToCart","s_add3ToCart"],"preorder":["s_preorderThis","s_preorderBoth","s_preorderAll3"]},"currenyCode":"USD","shippingDetails":{"xz":"same","yz":"same","xy":"same","xyz":"same"},"tags":["x","y","z"],"strings":{"addToWishlist":["add to wishlist","Add both to Wish List","Add all three to Wish List"],"addToCart":["Add to Cart","Add both to Cart","Add all three to Cart"],"showDetailsDefault":"Show availability and shipping details","shippingError":"An error occurred, please try again","hideDetailsDefault":"Hide availability and shipping details","priceLabel":["Price:","Price for both:","Price for all three:"],"preorder":["Pre-order this item","Pre-order both items","Pre-order all three items"]}}
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 guarantee error-free memory management. 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. Visit this book's companion Website for updates, revisions, online gc resources, bibliography and links to more gc sites 'Whatever else Java has accomplished, it has finally brought garbage collection into the mainstream. The efficiency and correctness of garbage collection algorithms is henceforth going to be of concern to hundreds of thousands of programmers; those who really care about this could do no better than to start with Garbage Collection: Algorithms for Automatic Dynamic Memory Management... the sort of comprehensive engineering manual that is so rare in computing.' Dr Dobb's Journal
About the Author
Richard is Professor of Computer Systems in the School of Computing at the University of Kent, Canterbury. He received a B.A. in Mathematics from Oxford University in 1976. He spent a few years teaching at school and college before returning to higher education at the University of Kent, where he has remained ever since, receiving an M.Sc. in Computer Science in 1989. In 1998 Richard co-founded the ACM/SIGPLAN International Symposium on Memory Management, of which he was the inaugural Programme Chair. He has published numerous papers on garbage collection, heap visualisation and electronic publishing, and he regularly sits on the programme committees of leading international conferences. He is a member of the Editorial Board of the journal Software Practice and Experience (Wiley). He was made an Honorary Fellow of the University of Glasgow in 2005 in recognition of his research and scholarship in dynamic memory management, and a Distinguished Scientist of the ACM in 2006. Richard is the prime author of Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Wiley, 1996. Garbage Collection is the process of automatically recycling unused memory. It is an essential component of all modern programming languages. Since its publication, the book has received huge acclaim:
"The sort of comprehensive engineering manual that is so rare in computing", Gregory V. Wilson, Dr. Dobb's Journal, September, 1997.
"I like the book because of its high standards of scholarship. I put it alongside Knuth's series", Mario Wolzko, Distinguished Engineer, Sun Microsystems Laboratories.
Richard is married, with three children. In his spare time, he races Dart 18 catamarans.
Richard is Professor of Computer Systems in the School of Computing at the University of Kent, Canterbury. He received a B.A. in Mathematics from Oxford University in 1976. He spent a few years teaching at school and college before returning to higher education at the University of Kent, where he has remained ever since, receiving an M.Sc. in Computer Science in 1989. In 1998 Richard co-founded the ACM/SIGPLAN International Symposium on Memory Management, of which he was the inaugural Programme Chair. He has published numerous papers on garbage collection, heap visualisation and electronic publishing, and he regularly sits on the programme committees of leading international conferences. He is a member of the Editorial Board of the journal Software Practice and Experience (Wiley). He was made an Honorary Fellow of the University of Glasgow in 2005 in recognition of his research and scholarship in dynamic memory management, and a Distinguished Scientist of the ACM in 2006.
Richard is the prime author of Garbage Collection: Algorithms for Automatic Dynamic Memory Management, Wiley, 1996. Garbage Collection is the process of automatically recycling unused memory. It is an essential component of all modern programming languages. Since its publication, the book has received huge acclaim: "The sort of comprehensive engineering manual that is so rare in computing", Gregory V. Wilson, Dr. Dobb's Journal, September, 1997. "I like the book because of its high standards of scholarship. I put it alongside Knuth's series", Mario Wolzko, Distinguished Engineer, Sun Microsystems Laboratories.
The 1996 book continues to be an excellent introduction to the topic. However, the state of the art has moved on considerably since 1996, and problems that were once considered impossible have now been conquered. Richard was joined by Dr. Tony Hosking (Purdue University) and Prof. Eliot Moss (University of Massachusetts) to write the Garbage Collection Handbook: the Art of Automatic Memory Management, Chapman and Hall, 2011. This book addresses the state of the art. In particular, it covers topics such as parallel, concurrent and real-time garbage collection. It also considers the trickier aspects of implementation such as the interface with the run-time system and support for language-specific features.
The first book (400 pages) took one person 2 years to plan, and 2 years to write. Tony and Richard first hatched the plan for a new book in 2002. A contract was signed with Chapman and Hall in 2007 but the new book (500+ pages) took the three of us more than 3 years to write. I am deeply grateful to my wife Robbie for putting with me while I wrote, and doing so not once but twice!
Richard is married, with three children. In his spare time, he races Dart 18 catamarans.
Garbage collection is a very interesting and complicated topic. To understand different garbage collection algorithms, one has to go through various research papers published over last 30 years or read the simplified descriptions presented in Java site and Bill Venners artima.com. This book does an excellent job in putting together all these algorithms in a logical order that gives us a chance to understand the different challenges sceintists and programming language authors faced and how the algorithms evolved over the time. The book starts with basic overview and history of commonly known algorithms: Reference counting, Mark and Sweep, and Copying algorithms. It then elaborates each of these algorithms, enumerates their pros and cons, and presents imporvements done by different researchers. After this, the book moves on to advanced algorithms like Generational algorithm and concurrent mark and sweep algorithm. I recommend this book to anyone interested in garbage collection. I haven't seen any other book on this topic. Even for programmers who mostly don't have to worry about GC as it is "automatically" done, this is a good book to understand and appreciate what goes on behind the scenes. Also, knowledge of the concepts in this book will be invaluable in performance tuning.
This book is superb. It is thorough enough that there is little need for a practitioner to read the primary literature, even when contemplating sophisticated garbage collector designs. I remember being intimidated by garbage collection prior to reading this book, but now I am instead enthralled by garbage collection. Given the trend toward automatic memory management in programming languages, I think this book is an increasingly important part of the practicing programmer's library.
The first time I read the book, it seemed a bit repetitive, because the first two chapters provide the basic framework for the rest of the book. As a result, topics such as copying collection are discussed in at least two places. Upon reflection though, I think that there is no better way to organize the book, because there exists no straight path through all of the concepts the book covers.
Over the past eight years I have read portions of this book over and over as I've contemplated garbage collector designs for various software projects. I continue to be surprised at just how well this book meets my needs.
This is really a great book. It's really a must have for people who want to write their own modern virtual machine (like I).
This is simply the only book about Garbage Collection you can get. It's very complete: all GC Algorithmes are covered by this book in depth! All topics are properly introduced it has a nice layout, and offer snippets of pseudocode. It is not really a dry text.
If you want to read scientific papers about Garbage Collectors (like of ACM), it's recommended to read first this book, to get a proper introduction in this topic.