最近使用-XX:+PrintCompilation
(JDK 8r111)来检查方法编译时,我注意到一个新列没有出现在documentation我可以find关于该主题:
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)
任何线索是什么意思?它似乎在0到3之间变化,本机方法总是0,其他方法总是非零。
答案 0 :(得分:8)
这是分层编译模式中的层。
以下是分层编译流程的样子。您可以在this answer中找到解释。
更多细节可以在HotSpot source code comments中找到,它定义了以下级别: