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.
I took me around a year to read this book. I picked it up because I wanted to learn more about Garbage Collection in general after a I heard a talk about the Ruby Garbage Collector in particular. At first, it was more than I could swallow and I had to progress slowly. I had to reread parts, I often stopped reading it for weeks, but I eventually finished it.
It sums up nicely different garbage collection algorithms. If you read this book, you will be able to write a bunch of *simple* garbage collectors and you will have a good idea how to think about them. You'll also learn that Garbage Collection is way more intricate and complex than you assume. It's pretty eye-opening.
There are two shortcomings. First, the books was written in the 90s and it shows. It describes interactions with the architecture (namely cache and virtual memory) that are not relevant in the present day. Second, you will not always be able to grok what the book talks about. The first chapters explain the algorithms in detail, but after a point, it starts to feel as a summary of the research papers, referenced at the back. It could have also used more illustrations to make its points.
Apart from this, the book is a great, if heavy, ready.