混合JDK / JRE热点/ OpenJ9

时间:2019-08-06 09:42:45

标签: java

我想知道使用与用于编译的JDK相同的JRE是否重要。

例如,我使用OpenJ9(v12)进行编译,然后使用Hotspot(v12)运行服务器。

会出现什么问题?性能如何?

我要不要

  • JDK OpenJ9 / JRE OpenJ9
  • JDK热点/ JRE热点

或者我可以混用  -JDK OpenJ9 / JRE热点  -JDK Hotspot / JRE OpenJ9

仅JRE会影响性能吗?还是两者都有?

2 个答案:

答案 0 :(得分:2)

OpenJ9和Hotspot是Java虚拟机(JVM)的2种实现,而JVM又是JDK的一部分

JDK OpenJ9和JDK Hotspot是随不同的JVM打包的OpenJDK,必须正确,它们都生成相同的字节码:snapShotChanges

它们之间的区别在于字节码的运行方式,简而言之,存在3种差异

  • 命令行选项
  • 垃圾控制器政策
  • 使用com.sun.management接口的代码

oj9_faq

性能影响只能通过尝试来确定,这取决于应用程序的性质。

答案 1 :(得分:0)

您应该期望这两个JDK生成相同的字节码,因为它们都使用来自OpenJDK的相同的Java编译器。正如lolacoco所说,由于VM和GC的实现方式不同,这些差异将在运行时出现。即使您使用其他编译器(例如eclipse IDE中的编译器)生成了字节码,该字节码也应在任何VM上运行。