Some overview articles - http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html http://jeremymanson.blogspot.com/2010/01/garbage-collection-references.html http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html https://www.infoq.com/articles/understand-classic-java-garbage-collection Interview with Azul, about the pauseless GC - http://www.infoq.com/interviews/gil-tene-azul-zing A story of how to tune GC - http://kirk.blog-city.com/why_do_i_have_this_long_gc_pause.htm NewRatio ( XX:MaxNewSize ) is important, but usually ignored - http://blogs.oracle.com/jonthecollector/entry/the_second_most_important_gc Java memory configuration and monitoring - http://blog.codecentric.de/en/2011/03/java-memory-configuration-and-monitoring-3rd-act/ How Garbage Collection differs in the three big JVMs - http://blog.dynatrace.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/ Garbage Collection Bootcamp 1.0 - http://www.lucidimagination.com/blog/2011/03/27/garbage-collection-bootcamp-1-0/ http://javarevisited.blogspot.sg/2012/10/10-garbage-collection-interview-question-answer.html How CMS work - https://blogs.oracle.com/jonthecollector/entry/hey_joe_phases_of_cms Compare between difference VM - http://www.optaplanner.org/blog/2015/07/31/WhatIsTheFastestGarbageCollectorInJava8.html GC handbook - https://plumbr.eu/java-garbage-collection-handbook Check what GC you are using - http://marxsoftware.blogspot.hk/2016/04/determining-garbage-collector.html About G1 Java Garbage Collector - http://dobbscodetalk.com/index.php?option=com_myblog&show=The-G1-Java-Garbage-Collector.html&Itemid=29 Tools to visualize GC - http://gceasy.io/ Visualizing difference algorithm - https://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/ safepoints - http://performantcode.com/gc/safepoints/ Few new GCs for huge heap - https://dzone.com/articles/java-garbage-collection-3 Objects are allocated with extra space for an indirection pointer. When the Java threads access the object, they first read the indirection pointer to see whether the object has moved. When the garbage collector moves an object, it updates the indirection pointer to point to the new location. New objects are allocated with an indirection pointer that points to themselves. Only when an object is copied during GC will the indirection pointer point to somewhere else. - https://blogs.oracle.com/javamagazine/understanding-garbage-collectors JVM Pauses - It's more than GC - https://blanco.io/blog/jvm-safepoint-pauses/ Digging into Java Garbage Collection - https://www.reddit.com/r/java/comments/pkjj5e/digging_into_java_garbage_collection/