JVM memory management and performance tuning
Performance and scalability are important topics for most enterprise applications that we build. Oftentimes we mostly consider connections to external systems (databases, message brokers, external web services) when we think about performance bottlenecks or performance and scalability optimization. This makes sense, as most enterprise applications spend a lot of their time performing (typically blocking) I/O. However, when you start to dig deeper and use tools like profilers and do thread dump and garbage collection analysis you’ll find that the actual code running in the Java VM can be the primary cause of severe performance and/or scalability issues under load.
Memory allocation can play a big role here: although garbage collection performance has increased a lot with every new version of the JVM, applications — esp. those with large heap sizes — can still suffer from full GC sweeps that always seem to happen at the worst possible moment and stop the world for several seconds.
To ensure that your application makes the most efficient use of the VM it’s running on it’s important to understand the interaction between your app and the VM, and also to understand the various tuning options that are available in the JVM that you happen to be using.
Tech Meeting with Azul Systems
During our next tech meeting we will have a speaker from Azul Systems as our guest to deliver a workshop seminar on JVM performance. As you may know, Azul Systems is a company that provides a custom Hotspot compatible JVM called Zing for systems that require very high and predictable performance. However, this workshop will not be a product sales pitch: instead, it will help you to understand the way JVMs perform memory management in general and garbage collection in particular, and how you can inspect the runtime behavior of your VMs in this respect. You’ll learn about how to properly measure statistics and avoid common pitfalls, and how to use the results for tuning purposes.
Obviously you’ll see how Zing compares to the standard JVMs used by most people in this respect, but even when you are not planning on migrating to a new JVM you’ll leave this session with a deeper understanding of Java memory management, how it affects your applications and how you make it work to your advantage.
So, when you’re interested, make sure to sign up for the meeting! It takes place on Thursday 5th July at our office in Amsterdam and will start at 4 PM. Attending is free and we’ll make sure that there’s pizza and beer to accompany the workshop.