Java热点vpm可以使用-client或-server参数运行。如果两者都没有指定,则根据某些规则选择一个。
在命令行中未指定模式时,是否可以判断正在运行的VM是以客户端还是服务器模式运行?我在运行过程之外的Windows机器上需要这个。
我意识到这不是一个编程问题,但我希望它没关系,因为它与编程相关。提前致谢。
Java热点vpm可以使用-client或-server参数运行。如果两者都没有指定,则根据某些规则选择一个。
在命令行中未指定模式时,是否可以判断正在运行的VM是以客户端还是服务器模式运行?我在运行过程之外的Windows机器上需要这个。
我意识到这不是一个编程问题,但我希望它没关系,因为它与编程相关。提前致谢。
在Java中,您可以使用以下代码进行检查:
String s = System.getProperty("java.vm.name");
// s = Java HotSpot(TM) Server VM
但这将是高度针对特定供应商的。
从命令行,您可以使用 金佛山 (曾经 检查给定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
以来:
[x86 -server: 8; x86 -client: 12]
12表示“客户”。
使用连接到正在运行的Java进程 jvisualvm。这将让您看到已使用的JVM参数。
您可以检索连接到MBean服务器的此信息。如果您运行的是Sun VM,则会有一个名为“java.lang:type = Runtime”的MBean,它公开属性“VmName”,其值与系统属性“java.vm.name”相同。例如,对于服务器vm,该值将类似于“Java HotSpot(TM)Server VM”。来自其他供应商的VM可能使用类似的机制。
您可以使用JDK中包含的工具(如jconsole或jvisualvm)连接到MBean服务器,也可以使用自己的工具编写 JMX 如果您需要编程访问。