zoukankan      html  css  js  c++  java
  • 如何控制JVM中的JIT行为?

    首先交代一下我自己的测试环境:

    Ubuntu 12.04 x86-64,OpenJDK 7 64-bit Server VM(mixed mode)

    MacOS  10.11,HotSpot  7 64-bit Server VM(mixed mode)

    1.如何关闭JIT?

    一般情况下,JIT是默认开启的,所以这里只存在如何关闭的问题。

    在启动JVM的时候,只需增加-Xint或者-Djava.compiler=NONE选项即可:

    java -Xint your_main_class_file_name

    java -Djava.compiler your_main_class_file_name

    如果是从Eclipse启动,则需要在Run Configurations中指定上述参数。

    2.如何查看JIT生成的汇编代码?

    有的时候,我们需要查看JIT生成的汇编代码,来观察JIT如何影响代码的执行。

    完成这项任务,需要安装一个支持库,hsdis,步骤如下。

    Linux系统:

    下载linux-hsdis-amd64.so或者linux-hsdis-i386.so

    重命名为hsdis-amd64.so或者hsdis-i386.so

    拷贝至$JAVA_HOME/jre/lib/amd64/目录

    我的机器上是/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/

    OS X系统:

    下载gnu-bsd-libhsdis-amd64.dylib或者gnu-bsd-libhsdis-i386.dylib

    重命名为hsdis-amd64.dylib或者hsdis-i386.dylib

    拷贝至$JAVA_HOME/jre/lib/目录

    我的机器上是/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/hsdis-amd64.dylib

    安装完支持库之后,在启动JVM的时候,只需增加以下两个选项即可:

    java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly your_main_class_file_name

    下面这个链接对此有详细说明,可以参考:

    https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly

    另外,如果不安装支持库的话,指定上述选项并启动JVM时会有如下错误:

    Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output

    Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly is disabled

  • 相关阅读:
    CVE-2017-17558漏洞学习
    USB键盘驱动分析
    CVE-2018-18955漏洞学习
    angr学习
    LeetCode递归解题模板
    USBD_STATUS
    Linux中/etc/passwd文件与/etc/shadow文件解析.
    USB设备架构
    HID Boot device.
    HID class request.
  • 原文地址:https://www.cnblogs.com/frydsh/p/5721300.html
Copyright © 2011-2022 走看看