JVM Tool Interface — стандартный API для разработки всевозможных инструментов: профайлеров, отладчиков и диагностических утилит. Фактически это единственный легальный способ обратиться к JVM, будь то HotSpot или другая виртуальная машина. Оказывается, JVM TI полезен не только при создании агентов. В докладе мы разберём, в каких случаях JVM TI может пригодиться разработчику, в том числе в обычных Java приложениях. Познакомимся с возможностями интерфейса, включая нововведения из Java 9 и 11, и напишем собственный инструмент. Несмотря на свою мощь, JVM TI не лишён недостатков. Прежде всего, он подразумевает написание кода на C/C++. Но, кроме того, с ним связана масса нетривиальных особенностей и даже JVM-багов. На реальных примерах из практики мы увидим, с какими проблемами JVM TI сталкиваются программисты, и как эти проблемы решить.
Ведущий программист в компании Одноклассники, специализирующийся на разработке высоконагруженных Java-серверов. Благодаря опыту работы в Oracle в команде HotSpot, знает JVM как свои пять пальцев и охотно делится экспертизой на конференциях. Автор проектов one-nio, async-profiler, а также лидер по ответам в категории #JVM на Stack Overflow.