jvm +LogCompilation输出中"callee is too large"的含义

Meaning of "callee is too large" in jvm +LogCompilation output

所以在 +LogCompilation 的输出中打印了消息

callee is too large

too big

与特定方法相关联(以及编译器决定不内联)。

但是 "callee" 不就是 方法 本身吗?这还有什么意思? 如果是这样,"callee too large" 和 "too big" 之间的区别是什么——它们的意思不一样吗(也许这只是一条遗留日志消息,2 位工程师对同一件事使用不同的语言?)

或者 "callee" 是否真的意味着 "caller"?
不内联的任何一个理由都是合理的。 有点不好意思,我不懂这个。

HotSpot JVM 有两个 JIT 编译器:C1 和 C2。它们一起工作 (the default). The 并不是很简单,但最简单的因素是字节码中被调用方方法的大小。

  • "callee is too large" 当内联方法的字节码大小大于 MaxInlineSize (35) 乘以 NestedInliningSizeRatio (90%) 时,消息为 printed by C1每个内联的下一级。
  • 当内联方法的大小大于 MaxInlineSize (35) 或 FreqInlineSize (325) 时,
  • "too big""hot method too big" 消息是 printed by C2 ) 分别。

因此,两条消息的意思大致相同,但在不同的编译层上。