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.