为什么运行在服务器模式下的Java会说版本是"混合模式"?

dja*_*fan 22 java jvm jvm-hotspot

为什么运行在服务器模式下的Java会说版本是"混合模式"?当我看到它时,是否意味着JVM没有真正加载到纯服务器模式?

Bor*_*ris 33

服务器模式并不意味着"没有混合".这些是不同的设置.

Mixed确实意味着JVM将混合编译和解释的代码.您可以选择使用开关-Xint切换到完全解释模式(通常您不想这样做).

服务器模式意味着热点编译器将与服务器设置一起运行.一般的假设是服务器模式下的虚拟机长时间运行,因此在考虑这一点时将进行优化.

因此,如果您看到混合模式,则表明您的VM未在服务器模式下运行.

编辑:如果你想检查实际运行的是什么,请尝试输出

System.out.println(System.getProperty("java.vm.name"));
System.out.println(System.getProperty("java.vm.info"));
Run Code Online (Sandbox Code Playgroud)

至少对于Sun VM或OpenJDK,这会给你一个提示.您可能会注意到,如果您使用的是64位系统,则始终会运行服务器VM.

  • `-Xcomp`仅适用于copmiled。而且您不想这样做。/顺便说一句,Server HotSpot拥有自己的解释器(它接受概要分析信息,这比沼泽标准解释要慢一些)。 (2认同)

ayu*_*ush 7

热点虚拟机

客户端和服务器Hotspot编译器都包含在Java运行时环境中.

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

  • 这实际上表明-server选项禁用混合模式.这篇文章是从2000年开始的,所以它可能也不是那么准确. (2认同)