Conservative GC: Is It Really That Bad?

There are numerous JVM implementations out there, based on different approaches and concepts. However, some aspects of the JVM architecture are often considered the Universal Truths that everyone should accept. Among them is the statement that a production-grade tracing garbage collector (GC) must compute the initial set of reachable objects precisely, whereas the alternative approach …

Continue reading

Portable Profilers And Where to Find Them

Many JVMs implement so called just-in-time (JIT) compilation that takes place at application’s run time. In particular, that provides an opportunity to gather execution profile and find the hottest methods, which are then recompiled with higher optimization level to achieve best performance.

In contrast, Excelsior JET uses ahead-of-time (AOT) compilation as the main compilation mode. This means that classes are compiled down to native code before execution if possible. There is also no such thing as recompilation of a class or a method at run time. However, profile guided optimizations (PGO) are still possible with AOT. The main difference is that the profile data has to be be collected by the application developer by running the application in profiling mode and then fed to the compiler.

Continue reading