"现代JVM"与旧JVM有何不同?

Pop*_*ops 6 java history jvm

这是我在高中和大学计算机科学课上听到的一句话:

"对于现代JVM来说,这不是问题."

通常,这会出现在关于整体绩效或优化策略的讨论中.然而,它总是被视为一种神奇的最终答案,好像它使问题不再值得思考.这让我想知道:典型的"现代JVM"和旧的JVM之间有什么区别,真的吗?

Ita*_*man 6

JVM技术最重要的改进是JIT:Just In Time编译器.JIT在运行时优化代码,从而产生巨大的性能提升,这使得Java(至少在某些领域)与C/C++程序竞争.

关于动态优化(代码运行)与静态优化(编译期间)的好处的有趣讨论可以在Steve Yegge的演讲中找到:http://steve-yegge.blogspot.com/2008/05/dynamic-languages -strike-back.html(其中,BTW本身很有趣).

与JIT完全无关的其他JVM改进是更快地分派虚方法,包括类方法和接口方法.


Nat*_*hes 6

无争用的同步过去很慢.
垃圾收集速度快得多.
热点优化变得更好.
一些非常古老的JVM 专门有绿色线程.