所以在+ LogCompilation的输出中有打印的消息
callee is too large
和
too big
与特定方法相关联(以及编译器决定不内联)。
但方法本身不是“被调用者”吗?还有什么意思呢? 如果是这样,“被调用者太大”和“太大”之间的区别是什么 - 他们不会意味着同样的事情(也许它只是一个遗留日志消息,2个工程师使用不同的语言做同样的事情?)
或者“被叫者”真的意味着“打电话”吗? 任何一个理由都不适合不内联。 我有点尴尬,我不明白这一点。
答案 0 :(得分:5)
HotSpot JVM有两个JIT编译器:C1和C2。它们在Tiered mode(默认值)中一起工作。 inlining strategy并不是很简单,但最简单的因素是字节码中被调用方法的大小。
"callee is too large"
(35)乘以MaxInlineSize
(90%)时,NestedInliningSizeRatio
消息为printed by C1内联程度。"too big"
(35)或"hot method too big"
(325)时,MaxInlineSize
和FreqInlineSize
条消息为printed by C2 因此,两个消息的含义大致相同,但是在不同的编译层上。