Java JIT 何时内联方法调用?它是基于#times调用调用方法(如果是,该数字是什么?),或者其他一些标准(那将是什么?)
我已经读过JIT可以内联'final'方法,但它也会根据运行时统计信息内联非最终方法,所以想知道什么是触发条件.
我想答案会因JVM的实现而有所不同,但也许所有这些都有共同之处?
Hot*_*cks 18
简短的回答是它想要的.
通常情况下,JITC会自动内联小型最终或伪终结方法,而无需先收集任何统计数据.这是因为很容易看出内联实际上节省了代码字节与编码调用(或者至少它几乎是"清洗").
除非统计数据表明它是值得的,否则通常不会内联真正的非最终方法,因为如果出现意外的子类,必须以某种方式"保护"内联的非决赛.
至于在JITCed或内联之前调用某些内容的次数,这种情况变化很大,即使在正在运行的JVM中也可能会有所不同.
| 归档时间: |
|
| 查看次数: |
3647 次 |
| 最近记录: |