如何确定在JVM实例上设置的if -server选项

时间:2012-07-17 11:37:35

标签: java jvm jvm-arguments

我试图确定我的JVM实例上是否默认启用了JVM(使用jdk 1.7u3)-server选项。根据我的环境(Windows 2008 Server R2)和Server-Class Machine detection information我预计它会被设置,虽然我想明确知道。当然,我可以使用该选项显式启动JVM,但我很可能会有一种简单的方法来确定它。

我已经尝试了以下方法,但似乎都没有明确说明我正在寻找什么。也许它在其他一些细节中编码。

  1. 通过jVisualVM查看JVM并查看未明确列出的JVM参数
  2. 以编程方式尝试查看JVM参数,匹配通过jVisualVM观察到的参数

    RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
    List<String> arguments = RuntimemxBean.getInputArguments();     
    
  3. 使用JVM选项-XX:+ PrintCommandLineFlags,这提供了详细的详细信息,但仍然没有证据表明-server选项已设置。

3 个答案:

答案 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。如果您正在运行服务器模式 - 请检查它为您显示的值。

如果您需要使用程序进行检查 - 您需要向管理工厂查询以上属性。