如何判断VM是在服务器还是客户端模式下运行?

Mis*_*ble 12 java

Java热点vpm可以使用-client或-server参数运行.如果两者均未指定,则根据某些规则选择一个.

在命令行中未指定模式时,是否可以判断正在运行的VM是在客户端还是服务器模式下运行?我在运行过程之外的Windows机器上需要这个.

我意识到这不是一个编程问题,但我希望它没关系,因为它与编程相关.提前致谢.

Von*_*onC 5

在Java中,您可以使用以下代码进行检查:

String s = System.getProperty("java.vm.name");
// s = Java HotSpot(TM) Server VM
Run Code Online (Sandbox Code Playgroud)

但这将是高度针对特定供应商的.

从命令行,您可以使用jinfo(用于检查给定HotSpot VM选项的值)

C:\>"c:\Program Files\Java\jdk1.6.0_16\bin\jps.exe" -l -m
21812 sun.tools.jps.Jps -l -m
19244 (eclipse)

C:\>"c:\Program Files\Java\jdk1.6.0_16\bin\jinfo.exe" -flag NewRatio 19244
-XX:NewRatio=12
Run Code Online (Sandbox Code Playgroud)

以来:

  • 它是罕见的实际设置NewRatio 火锅选项
  • 文档规定:新旧一代尺寸的比例. [x86 -server: 8; x86 -client: 12]

12表示"客户".


Mar*_*ark 5

使用jvisualvm连接到正在运行的Java进程.这将让您看到已使用的JVM参数.