环境
1.机器型号:MacBook Pro (Retina, 15-inch, Mid 2015)
2.CPU型号:2.5 GHz Intel Core i7
3.操作系统:macOS 10.12.5 (16F73)
4.内核版本:Darwin 16.6.0
5.JDK版本:java version "1.8.0_101"(重要,jdk版本不同hsdis库可能要重新编译)
相关源码
1.jdk8地址:http://hg.openjdk.java.net/jdk8/jdk8
2.JITWatch源码:https://github.com/AdoptOpenJDK/jitwatch
预备知识
1.hsdis:查看JIT编译汇编代码,目录位置:jdk8/hotspot/src/share/tools/hsdis
2.JVM相关参数:
-server 表示jvm以C2编译器编译
-Xcomp 以编译模式运行,默认为mix
-XX:+TraceClassLoading 打印类加载日志
-XX:+PrintAssembly 打印汇编代码,需要hsdis支持
-XX:LogFile=path/jit.log 将jvm输出日志输入到jit.log中
3.JITWatch 开源分析jvm汇编命令工具
安装
一、hsdis编译安装
1.cd hotspot/src/share/tools/hsdis #jdk8源码中
2.下载binutils源码:(编译hsdis需要,jdk8需要2.26版本/jdk7则为2.24版本)
wget http://ftp.heanet.ie/mirrors/gnu/binutils/binutils-2.26.tar.gz
tar -xvf ./binutils-2.26.tar.gz
3.此步骤操作均在hsdis目录下:
export CPP=/usr/bin/cpp #这里需要先设置环境变量CPP,否则make时会报错
make BINUTILS=binutils-2.26 ARCH=amd64 #编译hsdis
mac下可能会有一下报错:
fatal error: sys/types.h: No such file or directory
解决:
xcode-select --install #按弹出框提示安装,注意,这里需要先安装xcode
安装完成后再次执行make BINUTILS=binutils-2.26 ARCH=amd64
4.hsdis编译完成:
对应lib目录为./build/macosx-amd64/hsdis-amd64.dylib
设置环境变量:
sudo vi /etc/profile
LD_LIBRARY_PATH="/Volumes/home/Users/preideas/work/jit"
5.检验hsdis库是否生效:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version > 1.txt
说明:
这里因为以上命令输出过多,所以重定向至1.txt
若看到以下输出,则说明hsdis安装成功:
二、JITWatch安装:
1.下载源码:
git clone https://github.com/AdoptOpenJDK/jitwatch.git
2.编译:
cd jitwatch
ant clean compile test run #已安装maven环境的,也可以执行mvn clean compile test exec:java
3.启动:(仍在jitwatch目录下)
sh launchUI.sh
Eclipse参数配置
1.在要运行的java类上:右键-->run as -->run configurations-->Arguments,填入以下参数;
-server -Xcomp -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+LogCompilation -XX:+TraceClassLoading -XX:LogFile=/Volumes/home/Users/work/jit/jit.log
说明:
-XX:LogFile参数中path根据自己机器设置
JITWatch使用
1.将eclipse中生成的jit.log导入jitwatch,效果如下:
2.点击1图中TriView效果如下:
说明:
从上图可看出volatile关键,使用了cpu的lock指令
附录
1.mac已编译hsdis-amd64库(见附件)
2.mac已编译hsdis-i386库(见附件)
相关推荐
mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk1.8安装包!mac系统jdk...
JDK1.8源代码
Mac OS jdk1.8安装包
JDK1.8Java代码开发规范 1.利于代码工整、维护 2.避免系统、内存等问题发生 正规公司非常需要规范程序猿的代码标准
JDK1.8中文文档 JDK1.8中文 jkd8中文文档 JDK中文版 标准的API规范文档,谷歌中文翻译 全翻译
Java JDK 1.8 版本 Mac os M1处理器 ARM版本,下载后直接无脑安装即可。JDK for ARM。
看大家需求 提供两种资源方式:(JDK1.8压缩包64位Windows版本)上面JDK1.8压缩包直接下载(解压一下就可以用),...无论是选择稳定成熟的JDK 1.8,还是追求最新功能和性能的JDK 17,都能够满足不同场景下的开发需求。
linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux jdk1.8linux ...
java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8java jdk1.8...
JDK 1.8中文API文档
jdk1.8版本免安装
jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk1.8 64位下载jdk...
Windows下64位 JDK1.8版本 Windows下64位 JDK1.8版本 Windows下64位 JDK1.8版本
hpunix jdk jdk1.8 hpunix jdk jdk1.8 安装方法见博客https://blog.csdn.net/diandiandididi/article/details/105862382
jdk1.8yyds
jdk1.8 api文档中文版 可以查看jdk1.8的各种api 说明,中文版本,支持按包、类、方法名称检索
JDK1.8 windows zip解压缩版
安装版,免配置环境变量版本java jdk1.8,方便用户快速安装使用