2011-02-03 45 views

回答

27

服务器模式并不意味着“不混合”。这些是不同的设置。

混合是否意味着JVM将拌匀编译和解释的代码。你可以选择使用开关-Xint切换到完全解释模式(通常你不想这样做)。

服务器模式意味着热点编译器将与服务器的设置运行。一般的假设是,服务器模式下的虚拟机是长时间运行的,所以要考虑到这些优化。

所以,如果你看到的混合模式,这是没有任何迹象表明你的虚拟机是不是在服务器模式下运行。

编辑:如果您想查询什么是真正在运行,尝试

System.out.println(System.getProperty("java.vm.name")); 
System.out.println(System.getProperty("java.vm.info")); 

至少在太阳VM或OpenJDK的输出这会给你一个提示。您可能会注意到,如果您位于64位系统上,您将始终运行服务器虚拟机。

+1

`-Xcomp`仅用于copmiled。你不想这样做。 /顺便说一句,Server HotSpot有它自己的解释器(它需要分析信息,这使得它比bog标准解释稍慢)。 – 2011-02-03 22:39:01

4

Hotspot Virtual Machine

客户端和服务器的热点编译器包含在Java运行时环境。

默认情况下,客户的编译器已启用,但激烈的服务器端应用程序,可以运行带有-server运行时选择服务器编译器。 热点虚拟机通常以混合模式运行,如-version输出中所示。混合模式意味着Hotspot在满足多个条件时动态地将Java字节码编译为本地代码,包括方法通过解释器运行的次数。混合运行时模式通常会产生最佳性能。

+2

这实际上表明-server选项禁用混合模式。这篇文章是从2000年开始的,所以它可能也不是那么准确。 – extraneon 2011-02-03 20:08:05

相关问题