JVM TI: how to create a "plugin" for a virtual machine

Day 2 /  / Track 1  /  RU / For practicing engineers

JVM Tool Interface is a conventional API to develop all sorts of tools: profilers, debuggers, or diagnostic utilities. In fact, it's the only legal way to access JVM, be it HotSpot or any other virtual machine.

It turns out that JVM TI can be used not only for creating agents. In this talk, we'll discuss in which cases JVM TI can help developers, including common Java applications. We'll learn about the capabilities of the interface, including new features from Java 9 and 11, and create our own tool.

Though powerful, JVM TI still has its flaws. In the first place, it requires writing C/C++ code. But besides that, it has lots of sophisticated elements and even JVM bugs associated with itself. Using the real-life cases as an example, we'll see what JVM TI issues developers encounter and how to solve these issues.

Andrei Pangin

Leading software engineer at Odnoklassniki, specializes in the development of high-loaded Java servers. Due to the experience he got while working at Oracle in HotSpot team, knows JVM like the back of his hand and is fond of sharing his expertise during various conferences. Authors one-nio and async-profiler projects, leads in the #JVM category on Stack Overflow.