我试图确定我的JVM实例上是否默认启用了JVM(使用jdk 1.7u3)-server选项。根据我的环境(Windows 2008 Server R2)和Server-Class Machine detection information我预计它会被设置,虽然我想明确知道。当然,我可以使用该选项显式启动JVM,但我很可能会有一种简单的方法来确定它。
我已经尝试了以下方法,但似乎都没有明确说明我正在寻找什么。也许它在其他一些细节中编码。
以编程方式尝试查看JVM参数,匹配通过jVisualVM观察到的参数
RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = RuntimemxBean.getInputArguments();
使用JVM选项-XX:+ PrintCommandLineFlags,这提供了详细的详细信息,但仍然没有证据表明-server选项已设置。
答案 0 :(得分:4)
你可以通过运行java -version命令找到它:
下面是使用-server标志运行的JVM的示例
java版&#34; 1.7.0_17&#34;
Java(TM)SE运行时环境(版本1.7.0_17-b02)
Java HotSpot(TM)64位服务器VM(内置23.7-b01,混合模式)
如果是-client,它将显示64位客户端虚拟机
大多数情况下,它取决于CPU的数量和物理内存。更多 @ http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html
答案 1 :(得分:3)
您可以使用System.getProperty("java.vm.name")
并解析字符串。
示例:
public class Test {
public static void main(String{[] args) {
System.out.println(System.getProperty("java.vm.name"));
}
}
此示例将导致:
OpenJDK Client VM
或者如果您正在使用-server:
OpenJDK Server VM
答案 2 :(得分:2)
打开JConsole - &gt;检查java.lang.Runtime - &gt; VmName属性。 它为我显示Java HotSpot(TM)客户端VM。如果您正在运行服务器模式 - 请检查它为您显示的值。
如果您需要使用程序进行检查 - 您需要向管理工厂查询以上属性。