如何确保我使用"服务器"JVM?

its*_*dok 8 java jvm

Sun的JVM有两种形式:-client并且-server,服务器VM应该针对长时间运行的流程进行优化,并且建议用于服务器应用程序.

当我java没有参数运行时,它显示使用选项,其中包括以下文本:

    The default VM is server,  
    because you are running on a server-class machine.

看过这个,我没有费心去添加-server进程启动命令.

但是,在最近的JVM崩溃日志中,我注意到文件末尾附近的以下行:

vm_info: Java HotSpot(TM) Client VM (14.0-b16) for linux-x86 JRE (1.6.0_14-b08), built on May 21 2009 02:01:47 by "java_re" with gcc 3.2.1-7a (J2SE release)

在我看来,Java正在使用客户端虚拟机,尽管它在帮助消息中说明了这一点.我要将-server选项添加到我的启动命令中,但现在我很怀疑.所以我的问题是:有没有办法确保我运行的虚拟机真的是服务器虚拟机,而不是强迫JVM崩溃?

操作系统是ubuntu 8.04,但我使用的是从Sun网站下载的JDK 1.6.0_14.

Jar*_*ell 11

你可以做

System.out.println(System.getProperty("java.vm.name"));
Run Code Online (Sandbox Code Playgroud)

在我的机器上返回哪个:

Java HotSpot(TM)客户端VM

要么

Java HotSpot(TM)64位服务器VM

当然,你不应该根据这个值做任何关键的事情,因为它将来可能会改变,并且在另一个JVM上会完全不同.


Jas*_*n S 9

在ServerFault上提出了一个非常类似的问题.我想说,如果你关心运行哪个版本,请始终使用-client或-server.