【问题标题】:Which Java HotSpot JIT compiler is running?哪个 Java HotSpot JIT 编译器正在运行?
【发布时间】:2013-02-11 18:34:22
【问题描述】:

我想知道我对 HotSpot Java 的无 VM 参数调用是否使用 -client、-server 或分层编译选项运行。当我不提供 VM 参数时,默认选择哪一个?有没有办法输出关于哪个 JIT 编译器正在运行的诊断信息?

【问题讨论】:

    标签: java jit jvm-hotspot


    【解决方案1】:

    假设这是热点:

    -XshowSettings:vm
    

    例如,在我的 Windows 机器上,我得到以下输出:

    VM settings:
        Max. Heap Size (Estimated): 1.77G
        Ergonomics Machine Class: client
        Using VM: Java HotSpot(TM) 64-Bit Server VM
    

    【讨论】:

    • 谢谢乔恩。我在 OS X 上运行 Hotspot,但是对于 Java 1.6 和 1.7,该选项无法识别,唉。
    • @JulienChastang:这很奇怪——我在 Windows 和 Linux 上都很好。 java -X 显示什么?
    • 我的错。实际上在 1.6 上它是无法识别的,但在 1.7 上它给了我你上面提供的那种信息。奇怪的是,当我提供 java -client -XshowSettings:vm 时,它仍然声称是 Server。 Charles Nutter (blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html) 似乎建议如果您使用 64 位,-server 是唯一的选择。很高兴从 Oracle 那里得到一些澄清。
    【解决方案2】:

    从运行的程序中,您可以查询java.vm.name 属性来区分客户端和服务器模式。如果您使用了该选项,则在热点上它将包含“服务器”(例如:Java HotSpot(TM) 64-Bit Server VM)。

    根据this page

    分层编译现在是服务器 VM 的默认模式。

    注意:它现在有效,但可能不是最适合未来的方法。

    【讨论】:

      【解决方案3】:

      确定正在使用哪个 JIT 编译器的更好的方法。

      在装有 32 位 JDK8 的 Windows 机器上:

      $ java -版本 java版本“1.8.0” Java(TM) SE 运行时环境 (build 1.8.0-b132) Java HotSpot(TM) 客户端虚拟机(build 25.0-b70,混合模式) $ java -XshowSettings -版本 2>&1 | grep sun.management.compiler sun.management.compiler = HotSpot 客户端编译器 $ java -server -XshowSettings -版本 2>&1 | grep sun.management.compiler sun.management.compiler = HotSpot 分层编译器

      所以客户端编译器是 Windows 32 位 JDK8 的默认值 '-server' 选项为您提供 32 位分层编译器。

      在装有 64 位 JDK8 的 Windows 机器上:

      $ java -版本 java版本“1.8.0” Java(TM) SE 运行时环境 (build 1.8.0-b132) Java HotSpot(TM) 64 位服务器 VM(内部版本 25.0-b70,混合模式) $ java -XshowSettings -版本 2>&1 | grep sun.management.compiler sun.management.compiler = HotSpot 64 位分层编译器

      因此,分层编译器是 Windows 64 位 JDK8 的默认设置。 Oracle 不提供 64 位客户端 VM。

      【讨论】:

        猜你喜欢
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多