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

Java 如何判断VM是在服务器模式还是在客户端模式下运行?,java,Java,Java热点vpm可以使用-client或-server参数运行。如果两者都没有指定,那么它会根据一些规则选择一个 当命令行中未指定模式时,是否可以判断正在运行的VM是以客户机模式运行还是以服务器模式运行?我需要在正在运行的进程之外的Windows框上安装此文件 我意识到这不是一个编程问题,但我希望它是好的,因为它与编程有关。提前感谢。在Java中,您可以使用以下代码检查: String s = System.getProperty("java.vm.name"); // s = Java Ho

Java热点vpm可以使用-client或-server参数运行。如果两者都没有指定,那么它会根据一些规则选择一个

当命令行中未指定模式时,是否可以判断正在运行的VM是以客户机模式运行还是以服务器模式运行?我需要在正在运行的进程之外的Windows框上安装此文件


我意识到这不是一个编程问题,但我希望它是好的,因为它与编程有关。提前感谢。

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

String s = System.getProperty("java.vm.name");
// s = Java HotSpot(TM) Server VM
但这将是高度特定于供应商的

在命令行中,可以使用(用于)

自:

  • 实际设置新比率和
  • 文档指定:新/旧代大小的比率<代码>[x86-服务器:8;x86-客户端:12]

12表示“客户端”。

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

如果JVM是用-debug启动的,您可以使用jdb连接到它,并使用eval

eval System.getProperty("java.vm.name");

您可以检索连接到MBean服务器的此信息。如果您运行的是Sun VM,那么您有一个名为“java.lang:type=Runtime”的MBean,它公开了属性“VmName”,该属性的值与系统属性“java.VM.name”相同。例如,对于服务器vm,该值类似于“Java热点(TM)服务器vm”。来自其他供应商的VM可能使用类似的机制


您可以使用JDK中包含的工具(如jconsole或jvisualvm)连接到MBean服务器,或者在需要编程访问时使用编写自己的工具。

我确实需要在命令行上使用此工具,但不幸的是,jinfo在Windows上不支持此功能,而我需要它。返回字符串是特定于供应商的,但是整个客户机与服务器虚拟机的问题也是供应商特有的。@Hemal:如果您可以复制一个JDK6,您可以在上调用jinfoWindows@VonC:我正在使用JDK6,但在Windows上,jinfo只支持正在运行的进程的-flag选项@Hemal因此我使用jinfo,严格限制为-flag:itworks@Hemal因此,我使用的
jinfo
,严格限于
-标志
选项:它可以工作
eval System.getProperty("java.vm.name");