gpt4 book ai didi

java - HotSpot JIT 内联策略 : top-down or down-top

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:36 26 4
gpt4 key购买 nike

假设我们有 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 次”的方法可能会得到注释“太大”。如果您设置 FreqInlineSize,您可能会收到“hot method too big”之类的评论。我从未在默认设置下看到它们。

关于java - HotSpot JIT 内联策略 : top-down or down-top,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com