当前位置: 首页 > 面试题库 >

HotSpot JIT内联策略:自上而下或自上而下

危宜
2023-03-14
问题内容

假设我们有3种方法:从方法1调用方法2,从方法2调用方法3。方法2和3的大小均为30个字节码。同样,对于确定性,假设总是总是从方法1一次调用方法2,而总是从方法2一次调用方法3。

如果首先内联方法2,则将直接从方法1的主体中调用方法3,并且可以依次内联。如果首先将方法3内联到方法2中,则方法2的大小将变为大约60个字节码,并且无法内联,因为默认MaxInlineSize阈值为35个字节码。

HotSpot JIT以哪种顺序内联方法:自上而下或自上而下?


问题答案:

MaxInlineSize至少执行一次但少于执行MinInliningThreshold次数的方法的影响编译。对于执行更多的方法,MinInliningThreshold存在另一种设置-XX:FreqInlineSize=…,其默认值更大(取决于平台)。不论热点为何,热点仍然内联MaxInlineSize。您可以通过使用运行应用程序进行测试-XX:+UnlockDiagnosticVMOptions
-XX:+PrintInlining
-XX:MaxInlineSize=0。它仍然会报告热点的内联(这些带有注释“(hot)”)。然后,只有先前报告为内联有“执行<MinInliningThreshold次”的注释的方法才可能使注释变为“太大”。如果您设置,FreqInlineSize您可能会收到诸如“热方法太大”之类的注释。我从来没有用默认设置看到过它们。



 类似资料:
  • 问题内容: 为什么我们说C这样的语言是自上而下的,而Java或C ++这样的OOP语言是自下而上的呢?这种分类在软件开发中是否有任何重要性? 问题答案: “自上而下”的方法对问题进行了高级定义,并将其细分为子问题,然后您可以递归地进行处理,直到发现明显且易于编码的部分为止。这通常与编程的“功能分解”风格相关联,但不是必须的。 在“自下而上”编程中,您确定了可以构成更大程序的较低级工具。 实际上,几

  • 本文向大家介绍自上而下和自下而上的解析之间的区别,包括了自上而下和自下而上的解析之间的区别的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我们将了解自顶向下和自底向上解析之间的区别- 自上而下的解析和自下而上的解析是解析树以到达树的开头的不同技术。这可以通过以下讨论的两种不同方法来完成。 自上而下的解析 这是一种解析技术,它首先查看解析树的最高级别,然后再向下处理直到解析树。 它使用语法规

  • 本文向大家介绍自下而上模型与自上而下模型之间的区别,包括了自下而上模型与自上而下模型之间的区别的使用技巧和注意事项,需要的朋友参考一下 自下而上的模型 自下而上模型是一种系统设计方法,其中详细定义了系统的各个部分。一旦设计和开发了这些零件,然后将这些零件或组件链接在一起以准备更大的组件。重复此方法,直到构建完整的系统。自下而上模型的优势在于可以在非常低的级别上进行决策并确定组件的可重用性。 自顶向

  • 本文向大家介绍自上而下的解析与自下而上的解析之间的区别,包括了自上而下的解析与自下而上的解析之间的区别的使用技巧和注意事项,需要的朋友参考一下 自顶向下解析 自顶向下语法分析技术是从语法树的顶端开始,向下移动,对语法规则进行评价的一种语法分析技术。 自底向上解析 自顶向下的语法分析技术又是一种从语法树的最底层开始,向上移动并评价语法规则的语法分析技术。 以下是“自上而下”解析和“自下而上”解析之间

  • 如果这个问题以前已经被问过,我很抱歉,但是我到处都查过了,找不到答案。 你如何做自上而下的移动pyplay? 如果我只使用矩形,这将很容易,但我将使用单个角色精灵(例如,如果我按d键使玩家向右移动,它将显示他向右移动的角色精灵并将角色向右移动)。 我所指的示例图像: 这是我的代码: 我知道这段代码可以改进,但我真的只想知道如何移动精灵。

  • 问题内容: 在Java中,自上而下的Web服务和自下而上的Web服务有什么区别?另外,SOAP和REST-ful Web服务之间有什么区别? 问题答案: 自顶向下意味着您从WSDL开始,然后一直使用Java创建所有必要的脚手架。 自下而上意味着您从Java方法开始,然后从中生成WSDL。 SOAP表示所有调用的URL都相同,只有Java方法的参数不同。REST表示URL加上在其上调用的HTTP方法