How to implement an internal JVM profiler that works well with AOT-compiled code?

Day 1 /  / Track 2  /  RU / Hardcore. Really hard and demanding talk, you'll understand only if you're an experienced engineer.

The number of ways to profile Java code is vast, and so is the number of profilers which allow doing that. Not so long time ago we had to build the profile for applications which run on Excelsior JET. It was to be done on all maintained systems and architectures, without app recompilation, and all this with satisfactory performance. It turned out that traditional ways of profiling do not work here, so we had to think of something of our own.

In this talk, we’ll discuss:

  • why JVM and AOT were in need of a built-in profiler;
  • the ways to profile Java code and how they work for AOT compilation;
  • the options while profiling the code from within the JVM;
  • the price we had to pay for the universal profiler we got.

Download presentation
Ivan Ugliansky
Excelsior LLC

Works at Excelsior since 2011, is one of the Excelsior JET developers (Java SE certified implementation based on optimizing AOT compilation).

Basically, works with runtime: GC, class loading, concurrency maintenance, profiling and so on. Besides, supports one plugin for the JET-compiled applications' debugging in GDB.

In his free time teaches C/C++ courses at Novosibirsk State University and sometimes writes for Excelsior JET Team Blog.