While using -XX:+PrintCompilation
recently (JDK 8r111) to examine method compilation, I noticed a new column which doesn't appear in the documentation I can find on the topic:
this column
|
|
v
600 1 s 3 java.util.Hashtable::get (69 bytes)
601 4 3 java.lang.Character::toLowerCase (6 bytes)
601 8 3 java.io.UnixFileSystem::normalize (75 bytes)
602 12 3 java.lang.ThreadLocal::get (38 bytes)
602 14 3 java.lang.ThreadLocal$ThreadLocalMap::getEntry (42 bytes)
602 18 2 java.lang.String::startsWith (72 bytes)
602 10 4 java.lang.String::equals (81 bytes)
602 2 % 4 java.lang.String::hashCode @ 24 (55 bytes)
602 16 s! 3 sun.misc.URLClassPath::getLoader (197 bytes)
603 23 n 0 java.lang.System::arraycopy (native) (static)
604 27 n 0 sun.misc.Unsafe::getObjectVolatile (native)
Any clue what it means? It seems to vary between 0 and 3, with native methods always 0, and other methods always non-zero.
This is a tier in Tiered Compilation mode.
Here is how Tiered Compilation flow looks like. You may find the explanation in this answer.
More details can be found in the HotSpot source code comments, which defines the levels as follows: