Presentation: Goodbye PrintGCDetails... and other JDK 9 Changes!


2:55pm - 3:45pm



Key Takeaways

  • Gain solid insight into how to debug, troubleshoot, and optimizing the JVM.
  • Understand how a JVM engineer reads GC Logs today with Java 8.
  • Learn java performance monitoring, profiling, and tuning updates for Java 9.


There are major new features and improvements coming in JDK 9 that will affect (but also help) anyone who's interested in Java performance monitoring, profiling, and tuning.

One of the most obvious ones is the new JVM logging framework which will unify all logging done by the JVM and replace HotSpot's current (and by now long-in-the-tooth) GC logs. The Compact Strings effort will help reduce the memory footprint of strings and, as a result, also reduce garbage collection overhead and improve throughput. The new stack-walking API will allow developers to walk a Java stack with better performance trade-offs than the existing solution. Finally, the new JVMCI API will allow JIT compilers to be written in Java.

This talk will give an overview of these features and outline their advantages and how they will help Java developers.


What is your role today? JVM Developer, Twitter VM Team

I’m a JVM Developer at Twitter, and I’m a member of the Twitter VM Team. We developer, maintain, improve, and release TwitterJDK which is the JDK that most of Twitter services run on internally.

Can you tell me what it means to run TwitterJDK?

TwitterJDK is basically an OpenJDK that we customize for Twitter. At Twitter, some of our services have specific performance and monitoring needs. We are a small team (five developers currently). Basically, by profiling and monitoring, we track down issues and help troubleshoot problems in production. We identify whether there is some performance problem that we could solve or some monitoring profiling limitations of the of existing JVM that we could improve upon.

So it’s mostly about profiling/monitoring? It is not so much about bug fixes, right?

We have some bug fixes. The JVM is pretty reliable, so we don’t hit that many bugs in production. But, yeah a lot of it is mainly around monitoring and profiling because of the way our services are run. It is very hard to test them separately. So if there any issues, a lot of the time we have to track them down them in production or in what we refer to as the "canary mode" of running the services. We want to have enough profiling information in production to be able to work out what is going on.

Can you explain your talk title to me?

PrintGCDetails has been the single most important command line argument in HotSpot with respect to Garbage Collection (GC) monitoring and profiling for years. Given that the GC logging framework has been overhauled in JDK 9, PrintGCDetails has been removed and replaced with alternatives. This is one of the topics I plan to cover the most during the talk. The mention of PrintGCDetails in the title should catch the attention of anyone who’s used it in the past.

What’s the motivation for your talk?

There are many changes that are coming in JDK 9 for people that do performance monitoring, GC monitoring and tuning, etc. For many years, folks have got very familiar with all of the GC logging options and output in HotSpot. All of that is removed in JDK 9 and replaced by the new unified logging framework. So, in order to get the same information they are used to, developers will not have to get familiar with the new command line options and the new output format. We are going to cover some of that in the talk, plus a few other bits and pieces that are related.

Is there any particular reason why there were so many different tuning and optimization JEP’s with 9?

I think a lot of them were because the Garbage Collector logging framework was basically re-done in Java 9. So a lot of the changes were kind of a follow on to that. Additionally, people found that having really good monitoring and profiling that you can enable in production made finding issues easier and it is really, really important.

In some cases (in my opinion), really good monitoring facilities are more important than pure JVM performance because, if you can’t work out what is going wrong (and things are going to go wrong sooner or later), then your performance is zero. So, this is why there is a lot of emphasis on profiling and monitoring.

Who is the target audience?

Anyone who’s used the current GC logging options and has spent a lot of time deciphering GC logs and anyone who’s interested in learning what monitoring information can be obtained from HotSpot.

Speaker: Tony Printezis

JVM/GC Engineer @Twitter, JCP Executive Committee, & Previous G1GC Tech Lead

Tony Printezis is a Staff Software Engineer at Twitter and a member of the VM Team in the Infrastructure Organization. He has over 15 years of virtual machine implementation experience with special focus on memory management. Most of his projects have involved improving the performance, scalability, responsiveness, parallelism, concurrency, monitoring, and visualization of garbage collectors. He was one of the designers of (and tech lead of) the G1 GC and the original implementer of the CMS GC. Before Twitter, Tony worked at Adobe, the Java organization at Oracle and Sun Microsystems, and Sun Microsystems Laboratories. He holds a PhD and a BSc(Hons) in Computing Science, both from the University of Glasgow in Scotland.

Find Tony Printezis at

Similar Talks

Software Development Director @Viator
Tech Lead for Timelines Infrastructure Team / Sr Staff Software Engineer @Twitter
Core Systems Libraries Software Engineer @Twitter
Observability Software Engineer @Twitter
Tech Lead of Manhattan Team @Twitter
Staff Engineer, JVM Team @Twitter
Technical Manager Aurora / Mesos Team @Twitter
Provisioning Engineering SE @Twitter



Monday Nov 7

Tuesday Nov 8

Wednesday Nov 9

Conference for Professional Software Developers