Sun 的规范 JVM 实现对字节码进行了一些非常复杂的优化,以便在代码运行几次后获得接近 native 的执行速度。
问题是,为什么不将此编译后的代码缓存到磁盘以供后续使用同一函数/类时使用?
就目前而言,每次执行程序时,JIT 编译器都会重新启动,而不是使用代码的预编译版本。当字节码本质上是被解释时,添加这个特性不会显着增加程序的初始运行时间吗?
最佳答案
在不使用 @MYYN 发布的链接的情况下,我怀疑这是因为 JVM 执行的优化不是静态的,而是动态的,基于数据模式和代码模式。这些数据模式很可能会在应用程序的生命周期内发生变化,从而导致缓存的优化不是最优的。
因此,您需要一种机制来确定保存的优化是否仍然是最佳的,此时您不妨立即重新优化。
关于java - 为什么 JVM 不缓存 JIT 编译的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992486/