Open Up your JVM with Open Source Tooling
Carl Chesser
@che55er
|
che55er.io
## Why ## 🤔
It's
critical
to understand what is occurring in your JVM.
___
With knowledge on what tools are readily available without modifying your application, you can quickly understand effective options to diagnose your system.
--- ## History ## 🙋♂️ I began building an internal course for the company I worked at to help teams diagnose their own Java memory issues.
...and the course grew.
jvmperf.net
Workshop focused on using open and available tooling on a poorly performing Java service.
## 🧭 ## Our Adventure We are going to explore some tools with rich history in Java for diagnosing different aspects of performance. * JDK Mission Control * Eclipse Memory Analyzer * VisualVM * Demo in jvmperf.net workshop * OpenTelemetry --- ## 🧰 ## Open Source Tooling These tools are not new.
If you are familar with these tools, we will also be sharing their updates over the years.
Hopefully you can learn some new tricks on how they can used.
## JDK Mission Control ## 🚀 * Started out as JRockit Mission Control * Open-sourced in 2018 as part of OpenJDK * Continues to get updates / releases (latest: 9.1 - Feb 2025)
📄 License: Universal Permissive License (UPL)
## JMC Updates ⭐️ [Additional details from Marcus Hirt's blog.](https://hirt.se/blog/)
## JDK Mission Control Agent ## 🚀 * A bytecode transformer JVM agent * Enables users to add custom JDK Flight Recorder events without changing code * Continues to get updates / releases (latest: 9.1 - Feb 2025) * Introduced in JMC [8.0 release (March 2021)](https://hirt.se/blog/?p=1312), with Agent Plugin in [8.1 (August 2021)](https://hirt.se/blog/?p=1361)
🤔 Utilization of JAR in recent releases requires building from source.
## Eclipse Memory Analyzer ## 🔍 * Solid tool for doing Java heap dump analysis. * Has been around (1.0 landed in 2010) * One of the better tools for handling large heap dumps. * Continues to get minor updates (currently 1.16.0 - Dec 2024)
📄 License: Eclipse Public License 2.0
Download at [eclipse.dev/mat/download](https://eclipse.dev/mat/download/).
⭐️ [New and Noteworthy Updates](https://eclipse.dev/mat/1.16.0/noteworthy.html)
## VisualVM ##
* Started out as part of Java 6 * Built on the NetBeans Platform, now with [VS Code Extension 🤩](https://marketplace.visualstudio.com/items?itemName=oracle-labs-graalvm.visualvm-vscode) * Continues to get updates / releases (latest: 2.2 - Apr 2025)
📄 License: GNU General Public License (GPLv2)
## VisualVM Updates ##
* Can be utilized with other languages through GraalVM (Ruby, Javascript, Python, R) * Can load heap dumps, JDK Flight Recordings, and coredumps
## VisualVM Updates ⭐️ See [Releases page](https://visualvm.github.io/releases.html) for noteable changes.
## [Jolokia](https://jolokia.org) * Alternative to JSR-160 connectors * Allows JMX over HTTP communication * Recent releases of JDK Mission Control 9.1 and VisualVM 2.2 have added support
Demo 🚀
## OpenTelemetry 🔭 (shout-out)
⭐️ [Java Support](https://opentelemetry.io/docs/languages/java/)
📄 License: Apache 2.0
## ✅ ## Recap * JDK Mission Control * Eclipse Memory Analyzer * VisualVM * OpenTelemetry * Learn more with [jvmperf.net](https://jvmperf.net)
Thank you! 🎉
Carl Chesser
@che55er
|
che55er.io