如何查找安装在Windows系统上的JVM是HotSpot还是JRockit,或来自其他供应商?
在你的终端中运行此命令
java -XshowSettings:properties -version
java -version
,它会打印JVM信息。对于人类来说,可以查看定义的各种系统属性。您最有可能想要的是java.vendor。
http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
对于程序而言,最好使用反射来测试你需要的JVM特定功能,而不是依赖于任意属性值。System.getProperty("java.vm.name")
。对于我来说,在HotSpot上它会给出Java HotSpot(TM) 64-Bit Server VM
,在JRockit上则会给出Oracle JRockit(R)
,尽管不同的版本/平台可能会给出略微不同的结果,因此最可靠的方法可能是:String jvmName = System.getProperty("java.vm.name");
boolean isHotSpot = jvmName.toUpperCase().indexOf("HOTSPOT") != -1;
boolean isJRockit = jvmName.toUpperCase().indexOf("JROCKIT") != -1;
Thorbjørn的建议是使用java.vendor
,但同一供应商可能会生产多个JVM;事实上,自从Oracle收购BEA和Sun以来,HotSpot和JRockit现在报告相同的值:Oracle Corporation
如果您想查找系统上安装的所有JVM:Nambari的答案存在问题,因为JVM可以安装在计算机上,但可能不在路径中。对于Windows,扫描注册表可能是更好的方法。