• 如何在windows平台下使用hsdis与jitwatch查看JIT后的汇编码


    1. 安装hsids

    这一步比较麻烦,需要提前安装cygwin,以及下载openjdk的源码

    具体步骤请参考下面的两篇文章

    How to build hsdis-amd64.dll and hsdis-i386.dll on Windows

    在64位Windows上编译hsdis

    编译时还遇到两个小坑

    a. 使用最新的binutils-2.29无法编译成功,最后只能下载binutils-2.27的包重新编译

    b. make的时候使用-j4参数希望加速编译,结果反而编译失败,只能去掉-j4参数继续单线程编译,比较慢

    编译完成后,将/hsdis/build/Linux-amd64里生成的hsdis-amd64.dll文件复制到$JAVA_HOME/jre/bin/server里即可

    2. 用hsdis查看JIT后的汇编码

    参考这篇文章

    使用hsdis查看jit生成的汇编代码

    3. 用jitwatch更方便的查看JIT后的汇编码

    如果我们使用加-XX:+PrintAssembly参数的方法直接查看JIT后的汇编代码,会得到很多很多的结果,非常难以看懂。

    还好有个叫做jitwatch的工具可以帮助我们分析。

    安装方法:

    a. 去jitwatch的github主页上下载源码,download zip就行了

    b. 确定电脑上已经安装了maven3组件,然后在解压后的jitwatch源码目录里执行mvn clean compile exec:java

    c. jitwatch的图形界面启动,如下图所示

    使用方法:

    a. 使用-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+LogCompilation -XX:LogFile=jit.log  参数启动你的应用程序,然后工作目录下就会产生一个名为jit.log的文件了,里面内容很多,试图人肉分析基本是徒劳的。

    b. 运行jitwatch,点击"Open Log"按钮,加载jit.log文件

    c. 点击"Config"按钮,设置应用的源码路径和编译后的Class路径,如下图所示:

     

    d. 点击"Start"按钮,然后在左边的树形图里选择自己想要分析的Class,然后右边点击method,就会弹出汇编码分析界面了,如下图所示:

    e. 分析界面分为左中右三栏,左边为java源码,中间为java字节码,右边为jit后的汇编码,如果进行过多次jit编译,还能分别查看编译结果,如下图所示:

     

    总之,hsdis+jitwatch用起来还是比较方便的(虽然安装起来确实比较费劲),推荐使用

  • 相关阅读:
    4/19学习总结
    人月神话读后感8
    4/18学习总结:PullToRefresh
    构建之法阅读笔记03
    构建之法阅读笔记02
    个人总结
    大二下学期课程总结
    学习进度16
    学习进度15
    课堂测试-找英语单词最长链
  • 原文地址:https://www.cnblogs.com/stevenczp/p/7975776.html
Copyright © 2020-2023  润新知