Skip to content
Advertisement

Minor question about Segmented Code Cache (http://openjdk.java.net/jeps/197)

I see that this JEP (http://openjdk.java.net/jeps/197) introduced 3 types of code caches.

The most obvious one to me is -XX:NonNMethodCodeHeapSize. This is the one that deals with JVM internal data.

What I do not understand is what is the difference between NonProfiledCodeHeapSize and ProfiledCodeHeapSize. That document says that:

Tiered compilation also introduces a new compiled code type: instrumented compiled code (profiled code).

My understanding is that “instrumented” here means “with counters”, so kind of logic to assume that this is really C1 compiled code? And the other one is C2?

Advertisement

Answer

In Tiered Compilation, profiled code means JIT-compiled methods that collect execution statistics (counters and type information), which can be used later for recompilation on a different tier.

Non-profiled code is not only C2 code. It also includes compiled wrappers for native methods, as well as methods compiled by C1 without execution statistics (Tier 1), e.g. simple methods like getters/setters that will not benefit from recompilation.

See codeBlob.hpp:

JavaScript
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement