JVM实现之间的差异

Mar*_* K. 18 java generics jvm jvm-languages tail-call-optimization

JVM实现在哪里不同(许可除外)?每个JVM是否都为通用处理实现Type Erasure?

两者之间的区别在哪里:

  • JRockit的
  • IBM JVM
  • SUN JVM
  • 打开JDK
  • blackdown的
  • kaffe的

.....使用Tail-Call-Optimization处理其中一个?

Jam*_*hek 18

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版本.


Bri*_*new 12

类型擦除是一种编译器功能,因此与JVM无关.