【发布时间】:2012-10-13 22:57:36
【问题描述】:
匿名类的回调函数是我们使用框架或库时常用的方法,因此了解 JIT 是否执行此类优化非常有用。
我想知道 JIT 编译器是否足够聪明,可以理解它们每次都会执行一些代码并编译成原生代码?
【问题讨论】:
-
您能再解释一下吗? JIT 编译器将创建(并优化)每个匿名内部类,就像创建任何其他类一样。
-
JIT 编译器的职责是将字节码翻译成底层执行平台可以理解的本地语言。在此编译期间,还会为每个翻译的块添加性能计数器。每次执行代码块时,计数器都会增加。如果计数器达到阈值(通常为 1500 次调用),则该块将永久编译为本机代码。我的问题是,JIT 编译器是否理解来自匿名类的方法调用实际上是调用同一个块并增加计数器或假设它是不同的调用?
-
@mspapant 请解释一下“要求同一个区块”是什么意思; JIT 编译器如何明确识别它;以及它会有什么不同的语义让你认为 JIT 编译器会以不同的方式对待它。
标签: java optimization compiler-construction