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 from Odnoklassniki as an example, we'll see what JVM TI issues developers encounter and how to solve these issues.