Brussels / 3 & 4 February 2018


Top Ten Metrics for Evaluating your Garbage Collector

There's an old joke about a new bride who prepares her first big dinner for her new husband. She's making her mother's brisket recipe which starts by cutting the ends off of the roast. Her husband asks her why she cuts the ends off. She says she does it because that's the way her mother always did it. She asks her mother and her mother says "That's the way your grandmother always did it". She asks her grandmother and her grandmother says "That's the only way it would fit in my pan". There's a lot of folklore and myth surrounding Java garbage collection performance, most of which is obsolete, irrelevant to your application, or was never really right in the first place.

So how do we evaluate a GC algorithm? We can measure various metrics: end to end run time, maximum pause time, average pause time, percentage of the cpu given to the Java threads, memory footprint, micro benchmarks, ... This talk will focus on ten (give or take) metrics/tools we can use to evaluate garbage collection performance. This isn't a comparison of OpenJDK collectors, it's a discussion of what characteristics are important in a good garbage collector and how to measure them.


Christine H Flood