6

我正在尝试确定是否在我的 JVM 实例上默认启用了 JVM(使用 jdk 1.7u3)-server 选项。根据我的环境(Windows 2008 Server R2)和服务器级机器检测信息,我希望它被设置,但我想明确知道。当然,我可以使用该选项显式启动 JVM,尽管有一种简单的方法来确定是否相同,但我很可能会这样做。

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

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

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

4

3 回答 3

4

您可以通过运行 java -version 命令找到它:

下面是使用 -server 标志运行的 JVM 的示例

java 版本“1.7.0_17”
Java(TM) SE 运行时环境(构建 1.7.0_17-b02)
Java HotSpot(TM) 64 位服务器 VM(构建 23.7-b01,混合模式)

在 -client 的情况下,它将显示 64 位客户端 VM

大多数情况下,它取决于 CPU 和物理内存的数量。更多 @ http://docs.oracle.com/javase/7/docs/technotes/guides/vm/server-class.html

于 2013-04-17T22:29:09.443 回答
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
于 2012-07-17T12:02:18.050 回答
2

打开 JConsole -> 检查 java.lang.Runtime -> VmName 属性。它为我显示 Java HotSpot(TM) Client VM。如果您正在运行服务器模式 - 检查它为您显示的值。

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

于 2012-07-17T11:59:51.873 回答