【发布时间】:2009-12-02 14:12:13
【问题描述】:
Sun 的 JVM 有两种类型:-client 和 -server,其中服务器 VM 应该针对长时间运行的进程进行优化,建议用于服务器应用程序。
当我不带参数运行java 时,它会显示使用选项,其中包括以下文本:
看到这里,我懒得在进程启动命令中添加-server。
但是,在最近的 JVM 崩溃日志中,我注意到文件末尾附近有以下行:
vm_info:用于 linux-x86 JRE (1.6.0_14-b08) 的 Java HotSpot(TM) 客户端 VM (14.0-b16),由“java_re”和 gcc 3.2.1-7a (J2SE) 于 2009 年 5 月 21 日 02:01:47 构建释放)在我看来,Java 正在使用客户端 VM,尽管它在帮助消息中说了什么。我将在启动命令中添加-server 选项,但现在我很怀疑。所以我的问题是:有没有办法确保我运行的虚拟机确实是服务器虚拟机,而无需强制 JVM 崩溃?
操作系统是 ubuntu 8.04,但我使用的是从 Sun 网站下载的 JDK 1.6.0_14。
【问题讨论】:
-
顺便说一下,我知道这个问题似乎更适合ServerFault,但我希望答案是几行java代码,所以看起来程序员更有机会回答.
-
我觉得有必要指出,仅仅因为运行没有参数的“java”正在使用服务器虚拟机,这并不能保证任何脚本/命令启动崩溃的进程都没有指定客户端虚拟机作为参数。