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用起来还是比较方便的(虽然安装起来确实比较费劲),推荐使用

如何在windows平台下使用hsdis与jitwatch查看JIT后的汇编码的更多相关文章

  1. 如何在Windows平台下安装配置Memcached

    Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一 ...

  2. JavaMail在Windows平台下正常发送邮件,部署到Linux后则发送失败

    问题: 在本机(Windows)环境下可以成功发送邮件,但部署到Linux服务器上后不能成功发送,前台不提示错误或提示502. linux下日志提示:javamail isssl false.... ...

  3. windows平台下基于VisualStudio的Clang安装和配置

    LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...

  4. Windows平台下搭建Git服务器的图文教程

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  5. Windows平台下搭建Git服务器的图文教程(转发)

    Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不讨论),但是SSH有客户端服务器端,所以在window ...

  6. 如何在Windows平台使用VS搭建C++/Lua的开发环境

    转自:http://ju.outofmemory.cn/entry/95358 本文主要介绍如何在Windows平台利用VS搭建C++/Lua开发环境.这里的“C++/Lua开发环境”主要指的是C++ ...

  7. Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  8. Windows平台下的读写锁

    Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...

  9. [转]Windows平台下安装Hadoop

    1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...

随机推荐

  1. CSS设计指南之伪类

    伪类这个叫法源自它们与类相似,但实际上并没有类会附加到标记中的标签上.伪类分两种. UI伪类会在HTML元素处于某个状态时(比如鼠标指针位于链接上),为该元素应用CSS样式. 结构化伪类会在标记中存在 ...

  2. CentOS 7, 升级python到3.x

    By francis_hao    Apr 11,2017 使用源码安装方式 首先到官网https://www.python.org/downloads/source/ 下载python最新版本.当前 ...

  3. HDU3338:Kakuro Extension(最大流)

    Kakuro Extension Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. LVS+Keepalived搭建MyCAT高可用負載均衡集群

    1.前面我们已经搭建好mysql主主,并且用mycat实现双写功能,主要配置文件: [root@mycat2 conf]# cat schema.xml <?xml version=" ...

  5. AngularJs学习——实现列表内容项的增加删除

    效果截图: 说明:引入bootstrap.min.css样式库和angular.min.js的静态资源库,实现列表内容的增加和删除操作. AngularJS代码: <script src=&qu ...

  6. koala 编译scss不支持中文解决方案

    方法一: 在scss文件第一行加上代码:@charset "utf-8"; 方法二: 进入到Koala 安装目录 C:\Koala\rubygems\gems\sass-3.4.9 ...

  7. Lesson 3

    1.关于面向对象的三个重要属性  Encapsulation(封装):无法直接访问类的成员变量,而是通过一些get set方法,间接访问数据域: Polymorphism(多态):静态绑定,动态绑定, ...

  8. 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家

    [算法]扫描线+平衡树(set) [题解]很明显的二维偏序数点,排序后扫描线,现加点后查询答案. 则问题转化为一维偏序,显然贪心找第一个比当前大的最优,所以用平衡树维护. 记得开multiset!!! ...

  9. 【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会

    [算法]树型DP||树的重心(贪心) [题解] 两遍DFS,第一次得到所有节点子树的路径和,第二次给出除了该子树外其它部分的路径和,时时计算答案. long long!!! #include<c ...

  10. #学习方法2打印为空,说明#延迟加载#解决方案:将nameField等设置改在viewDidLoad中设置

    #学习方法#error调试#NSLog调试之无法进行数据传输,Edit无法现实之前编辑 的内容             https://www.evernote.com/shard/s227/sh/c ...