在JIT的帮助下,程序运行时间越长,速度越快?

时间:2015-07-17 14:08:07

标签: java jit

我试图以纯解释模式运行java程序,并且该程序的速度是无法容忍的。

随着时间的推移,JIT应该能够将更多的字节代码编译为本机代码,因此程序应该运行得更快。我对吗?如果我的应用程序(例如Tomcat)运行了几个星期,几个月,JIT是否可能将大部分字节代码编译成本机代码?

感谢您的回答,谢谢!

1 个答案:

答案 0 :(得分:2)

  

在JIT的帮助下,程序运行时间越长,它就越快?

一点是的。一旦重要的一切都被JIT编译,它就会停止变得更快。

  

如果我的应用程序(例如Tomcat)运行了几周,几个月,JIT是否可能将大部分字节代码编译成本机代码?

所有代码都可能是JIT编译的。某些代码也可能不会被JIT编译。

JIT编译的粒度是一种方法。但是JIT编译器只在解释器注意到它花了超过一定的时间运行它之后才决定JIT编译一个方法。如果你有一个永远不会被调用的方法,它就不会被JIT编译。

不重要。如果一个方法从未或几乎从未使用过,那么它(仍然)被解释的事实可能对性能的影响很小。

正如Joop Eggen指出的那样,还有其他一些问题会导致长时间运行的程序减速......或者加速。例如:

  • 各种资源泄漏可能导致减速。

  • 加速可能是由于堆存储管理("热身")和缓存数量的稳定所致。