java - 如何确保我使用的是 "server"JVM?

标签 java jvm

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/

相关文章:

java - s 在 Java 中占用 3 个字节吗?当: String s = "abc"; Java

java - Java项目有没有简单的项目构建/依赖管理工具?

java - 如何从linkedList中递归删除一个项目?

java - 如何创建数据并将其输入 BubbleSortable(接口(interface))对象?

java - 反射和不变性应该如何协同工作

java - 反射可以改变字段的声明类型吗

jvm - 如何从远程服务器jvm获取堆转储?

java - 在 Linux 2 中用 java 编译 Cplex

java - 需要解决一个查询缓存问题

java - 在 JNI 函数中,当我就地更改从 Java 代码传递的数组时,数组不会修改