Java热点vpm可以使用-client或-server参数运行。如果没有指定,则根据一些规则选择一个。如何判断虚拟机是在服务器还是客户端模式下运行?
是否可以告诉一个正在运行的虚拟机是否在客户端或服务器模式下运行时在命令行中没有指定模式?我需要在正在运行的进程之外的Windows盒子上使用它。
我知道这不是一个编程问题,但我希望它是好的,因为它是编程有关。提前致谢。
Java热点vpm可以使用-client或-server参数运行。如果没有指定,则根据一些规则选择一个。如何判断虚拟机是在服务器还是客户端模式下运行?
是否可以告诉一个正在运行的虚拟机是否在客户端或服务器模式下运行时在命令行中没有指定模式?我需要在正在运行的进程之外的Windows盒子上使用它。
我知道这不是一个编程问题,但我希望它是好的,因为它是编程有关。提前致谢。
在Java中,你可以使用此代码检查:
String s = System.getProperty("java.vm.name");
// s = Java HotSpot(TM) Server VM
但是,这将是非常特定的供应商。
在命令行中,你可以使用jinfo(用于check a value of a given HotSpot VM option)
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表示“客户”。
连接到与jvisualvm正在运行的Java进程。这会让你看到已经使用的JVM参数。
您可以检索此信息连接到MBean服务器。如果您运行的是Sun VM,则会有一个名称为“java.lang:type = Runtime”的MBean,该属性公开属性“VmName”,其值与系统属性“java.vm.name”相同。例如,对于服务器虚拟机,其值将类似于“Java HotSpot(TM)服务器虚拟机”。来自其他供应商的VM可能使用类似的机制。
您可以使用JDK中包含的工具(如jconsole或jvisualvm)连接到MBean服务器,也可以使用JMX编写自己的工具(如果需要编程访问),可以连接到MBean服务器。
刚刚添加jinfo possiblelity – VonC 2009-08-21 11:35:52
@Hemal因此,我使用'jinfo',严格限制为'-flag'选项:它的工作 – VonC 2009-08-21 12:49:15