Sun 的 JVM 有两种类型:-client
和 -server
,其中 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 正在使用客户端 VM,尽管它在帮助消息中是这么说的。我打算将 -server
选项添加到我的启动命令中,但现在我很怀疑。所以我的问题是:有没有一种方法可以确保我运行的虚拟机确实是服务器虚拟机,而无需诉诸强制 JVM 崩溃?
操作系统是 ubuntu 8.04,但我使用的是从 Sun 网站下载的 JDK 1.6.0_14。
最佳答案
你可以做到
System.out.println(System.getProperty("java.vm.name"));
哪个在我的机器上返回:
Java HotSpot(TM) Client VM
或
Java HotSpot(TM) 64-Bit Server VM
当然,你不应该根据这个值做任何重要的事情,因为它将来可能会改变,并且在另一个 JVM 上会完全不同。
关于java - 如何确保我使用的是 "server"JVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1833129/