聊聊JVM(十)Mac下hsdis和jitwatch下载和使用

网上已经有了详细的hsdis和jitwatch的教材,比如这篇利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码

hsdis能够查看Java生成的汇编代码,具体的可以查看上面这篇文章。这里提供一下Mac下的hsdis-amd64.dylib和hsdis-amd64.so文件的下载地址http://pan.baidu.com/s/1i3HxFDF

免得还要重新去编译。前者是Mac 64位机器下的,后者是Linux 64位机器下的。

下载下来hsdis之后,最简单让java命令加载它的方法是把它放在一个目录下面,然后export一下这个目录就行,比如在.bashrc下面

export LD_LIBRARY_PATH=~/Documents/hsdis/

这样就可以使用hsdis来查看JIT生成的汇编代码了。可以用下面的命令来查看hsdis是否工作

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version

看到下面这个结果证明hsdis已经配置正确了

下面来试一下用hsdis来生成一个类的汇编码。

java -server指令指定了JIT使用C2编译器来优化,-Xcomp选项指定了JVM以编译模式运行,否则默认是Mix模式,只有热点代码才会被JIT编译优化。很多人说写的类没有被JIT编译,我的经验是这个类如果有main方法就会生成汇编码。-XX:+PrintAssembly 可以打印汇编码。执行下面命令可以让JIT编译并把结果生成到指定的log文件中

java -server -Xcomp  -XX:+UnlockDiagnosticVMOptions -XX:+TraceClassLoading  -XX:+PrintAssembly -XX:+LogCompilation
-XX:LogFile=jit.log test.TestMain

可以用jitwatch工具来查看刚生成的日志文件。 jitwatch可以从http://pan.baidu.com/s/1i3HxFDF 下载。我放了一个jitwatch.sh在里面,下载下来之后改一下文件中的路径就可以直接运行了。

关于jitwatch的使用方法可以看这篇利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码

用jitwatch可以看到哪些方法被JIT编译了

在调用一个方法后,会设置OopMap状态,这是一个safepoint

在方法返回前,会插入safepoint polling page的代码 test %eax, 0xxxxxxx,以便让线程进入到这个safepoint的时候可以被阻塞

hsdis和jitwatch是学习JVM的利器,下载下来用一用吧

时间: 2024-08-25 08:44:43

聊聊JVM(十)Mac下hsdis和jitwatch下载和使用的相关文章

Windows/Linux/Mac下myeclipse所有版本下载地址

说明文档:MyEclipse生成注册码   Myeclipse2014激活教程  Myeclipse-2014-GA-破解文件 1.Windows版myeclipse下载地址 MyEclipse2015:myeclipse-2015-2014-07-11-offline-installer-windows.exe MyEclipse2014:myeclipse-spring-2014-GA-offline-installer-windows.exeMyEclipse2013:myeclipse-

Mac下获取AppStore安装包文件路径

本文介绍了Mac下如何找到AppStore下载的安装包路径,以及如何提取出来供以后使用的相关步骤,希望对大家有所帮助. 通过远在大洋彼岸的苹果服务器下载东西,确实有够慢啊!AppStore更甚:甚至都经常提示连不上服务器,而有些软件呢,还必须从AppStore下载安装,所以没办法,谁让上了苹果的贼船呢!公司的网速更是不敢恭维,以至于基本上不下东西,除非像这次一样:手贱的把iPhone6升级到8.2.2了,然后Xcode6.1.1真机调试不成了,所以需要下个Xcode6.2.昨天刚更新的Xcode

window和mac配置apache,及mac下安装mysql

先打开apache,在浏览器上输入  localhost     回车后会如果屏幕上显示:It works! 如下图: 这说明你的apache已开启 在window下配置apache: 1.找到apache的安装目录下的http.conf文件,打开此配置文件 2.在该文件中搜索 LoadModule php5_module 将前面的#号去掉 然后把后面的路径改为   php安装路径/php5apache2_2.dll 3.搜索 Directory   将下面的两个路径  改为项目所在文件夹 4.

Mac下使用Eclipse实现Android中调用C/C++(NDK)基础详细教程

写于2014年那个办公室停电导致热爆了汗流浃背的夏天. 吐槽和需求 果然跟po主用之前猜的差不多,eclipse不愧是po主非常非常没有猿粪的开发工具,po主简直已经无力吐槽了,为什么稳定性这么糟糕的东西居然还能被如此多大牛开发者甘之如饴?一群叫嚣着要开发出世界上最人性化UI的人连自己用的工具都不稳定(人性化?呵呵),就像一个拿着漏勺烂锅残口菜刀的乞丐跟你说他能做世界上最好的叫花鸡一样--你信吗?当然,厨师可以不会(一般也不)生产菜刀,生产菜刀的也不一定是厨师,但起码要能分辨出好的菜刀:开发者可

聊聊JVM(四)深入理解Major GC, Full GC, CMS

很多人都分不清Major GC, Full GC的概念,事实上我查了下资料,也没有查到非常精确的Major GC和Full GC的概念定义.分不清这两个概念可能就会对这个问题疑惑:Full GC会引起Minor GC吗? 经过一系列的查找和对JVM表现的分析,基本可以给Full GC和Major GC下一个定义了,这篇说一说概念和理由. 这篇文章Major GCs – Separating Myth from Reality 基本讨论的也是这个问题,但是它没有给出实际的证明. 我们可以认为Maj

在mac下安装jdk1.7(转)

转自:http://vela.diandian.com/post/2012-01-06/15379924 最近呢,想玩玩jdk1.7,不过mac平台下的jvm一直都是Apple自己改的,所有有些麻烦.这篇文章呢,就是一个详细的步骤,教你如何在mac下安装和使用jdk1.7.当然了,和你想象的一样,我是不会写什么有技术含量的文章的,所以只是一个简单的guide. 首 先呢,为了少出问题,先要让平台装一个java,Snow Leopard下还好(默认就有),Lion的话默认是没有安装任何jvm的,安

【工匠大道】Mac下Java开发环境配置简述

本文地址 原文地址 分享提纲: 1. 下载JDK1.7 2. 配置java_home 3 .安装tomcat 4 .安装eclipse或者myeclipse 5.  mysql安装 破解版下载请参考Myeclipse 10 for mac 安装过程及myeclipse 10 for mac 破解版下载 刚整的pro所以研究半天把开发环境搭建好 1 首先jdk1.7 首先呢,为了少出问题,先要让平台装一个Java,Snow Leopard下还好(默认就有),Lion的话默认是没有安装任何jvm的,

php大力力 [021节]mysql表名在mac下不能大写

2015-08-27 php大力力021.mysql表名在mac下不能大写 刚才数据库里面,phpMyAdmin狂出错. Some errors have been detected on the server! Please look at the bottom of this window. Notice in ./libraries/structure.lib.php#1868 Undefined index: Rows Backtrace ./libraries/structure.li

Mac 下VPN使用的详细设置

现在免费的vpn 很多,大都是提供免费的时间或者部分流量,大家自己百度找可以使用的vpn并注册就ok了,我用的是这个不怕做广告,---链接---,大家可以试试,我说下我的使用状况,下载速度很慢,毕竟是免费的,大概是几十K 左右,但是看网页什么的都正常.而且如果不打算买vip 的话,也可以每天都有1G的流量.不错哦~ 然后就是mac 上的设置很简单一步一步来就好了 首先你要有对应的VPN账号 到相应的vpn 网站注册(需要邮箱哦)得到vpn账号 然后找到对应免费的ip 然后进入系统偏好设置,进入