为什么在 -server 模式下运行的 Java 说版本是“混合模式”?当我看到这一点时,这是否意味着 JVM 并没有真正以纯服务器模式加载?
问问题
23773 次
2 回答
34
服务器模式并不意味着“不混合”。这些是不同的设置。
混合确实意味着 JVM 将混合编译和解释代码。您可以选择使用开关 -Xint 切换到完全解释模式(通常您不想这样做)。
服务器模式意味着热点编译器将使用服务器设置运行。一般的假设是服务器模式下的虚拟机是长时间运行的,因此将在考虑到这一点的情况下进行优化。
因此,如果您看到混合模式,这并不表明您的 VM 没有在服务器模式下运行。
编辑:如果您想检查真正运行的内容,请尝试输出
System.out.println(System.getProperty("java.vm.name"));
System.out.println(System.getProperty("java.vm.info"));
至少对于 Sun VM 或 OpenJDK,这会给您一个提示。您可能会注意到,如果您在 64 位系统上,您将始终运行服务器 VM。
于 2011-02-03T20:11:01.473 回答
8
客户端和服务器热点编译器都包含在 Java 运行时环境中。
默认情况下启用客户端编译器,但对于密集的服务器端应用程序,您可以使用 -server 运行时选项运行服务器编译器。Hotspot 虚拟机通常以混合模式运行,如 -version 输出所示。混合模式意味着 Hotspot 在满足多个条件时将 Java 字节码动态编译为本机代码,包括方法通过解释器运行的次数。混合运行时模式通常会产生最佳性能。
于 2011-02-03T20:04:28.477 回答