java – HotSpot JIT内联策略:自顶向下还是从下到上

前端之家收集整理的这篇文章主要介绍了java – HotSpot JIT内联策略:自顶向下还是从下到上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我们有3种方法方法2从方法1中调用,方法3由方法2调用.
方法2和3每个大小为30个字节码.另外,假设定义方法2总是从方法1调用一次,方法3总是从方法2调用一次.

如果方法2首先被内联,则方法3将从方法1的主体直接调用,并且可以轮流地内联.如果方法3首先插入到方法2中,则后者的大小将变为大约60个字节码,并且由于默认的MaxInlineSize阈值是35字节码,因此它不能被内联.

在哪个顺序HotSpot JIT内嵌方法:自顶向下还是从下到上?

解决方法

MaxInlineSize影响至少执行一次但小于MinInliningThreshold次的方法的编译.对于超过MinInliningThreshold执行的方法,存在一个不同的设置-XX:FreqInlineSize = …具有更大的(依赖于平台的)默认值.无论MaxInlineSize如何,热点仍然内联.您可以通过使用-XX运行应用程序来测试它:UnlockDiagnosticVMOptions -XX:PrintInlining -XX:MaxInlineSize = 0.它仍然会报告热点的内容(这些与评论“(热)”).只有以前报告的方法与“执行” MinInliningThreshold times“可能会使评论”太大“.如果您设置了FreqInlineSize,您可能会收到“热法太大”等评论.我从来没有看到他们的默认设置.

猜你在找的Java相关文章