Chaotic Java has an outstanding review of the JVM garbage collectors in two parts. The first is an introduction to mark and sweep garbage collections, and the second is a quick, mostly understandable, review of concurrent garbage collection.
In my experience in working with .Net and Java, I have found that most developers have little-to-no knowledge of the theories behind garbage collection and reference strength. I fear for the future of development if more developers don't understand the tools of their trade in greater detail. Who knows what products they might be working on, or how acceptable a restart every four minutes will be.