是否有关于各种JVM的JIT的综合文档?我被闪电击中,对于下面的场景,我只是希望 JIT会做正确的事,但我找不到任何关于我的希望是否合理的文件。
情景:
if (complexCondition(myObject) && effectivelyStaticBoolean) {
...
}
effectivelyStaticBoolean
在类的实例化时被读取一次,并且实际上是静态final,这意味着在同一个JVM中它始终是true
或false
,但永远不会改变行为(最基本的例子是StringUtils.containsIgnorecase(System.getProperty("os.name"), "win");
)
complexCondition(myObject)
取决于实际的对象实例,检查成本很高。
我的希望:JIT会启动,如果effectivelyStaticBoolean == false
,那么最终(如果确定为热门)将不会对complexCondition(...)
进行评估。
我的希望是否合理? (特别是对于Oracle JVM,但我也对其他主流JVM的答案感兴趣)