JVM 实现之间的差异
2022-09-02 12:15:50
JVM 实现有何不同(许可除外)?是否每个 JVM 都为泛型处理实现了类型擦除?
区别在哪里:
- 克罗基特
- IBM JVM
- 孙建民
- 打开 JDK
- 黑幕
- 咖啡
.....处理其中一个尾部调用优化?
JVM 实现有何不同(许可除外)?是否每个 JVM 都为泛型处理实现了类型擦除?
区别在哪里:
.....处理其中一个尾部调用优化?
JVM实现在实现JIT编译,优化,垃圾回收,支持的平台,支持的Java版本等方面可能有所不同。它们都必须满足一组功能和行为,以便它能够正确执行 Java 字节码。
正如您所指出的,主要区别在于许可。其他非技术差异往往在于免费/付费支持选项、与其他技术(通常是 J2EE 服务器)的集成以及对源代码的访问。
注: 当 J2EE 服务器在 JVM 上运行时,某些服务器具有用于监视、分析和调整 JVM 性能的集成工具。
就技术差异而言,这些差异多年来已经变得不那么重要了。曾几何时,IBM和JRockit JVM的性能远远优于参考Sun实现。这是由于运行时优化类型的显著差异、垃圾回收的差异以及本机代码的差异(以及各种类使用的本机代码量)。这些性能差异不再那么重要。
一些JVM还包括或与诊断和监控工具集成。JRockit 包括一组用于监视 JVM 性能的工具。Sun 提供了各种基于 JMX 的工具,这些工具具有重叠的功能来执行相同的操作。IBM Websphere曾几何时为他们的整个J2EE应用程序服务器提供了一套类似的工具(不确定他们是否仍然如此,但我认为这仍然是真的)......
一些开源JVM的性能往往有点慢,因为它们是从头开始重新开发的。因此,他们还有更多的追赶工作要做。我最后一次检查大约2年前,Blackdown比Sun JVM慢得多(1.5x-2x?)。它也有点落后于支持的Java版本。