JMH使用-查看JAVA的汇编语言

1.使用jmh
http://openjdk.java.net/projects/code-tools/jmh/

2.安装maven,yum install maven

3.执行如下命令,会生成benchmark(基准测试)的test项目:
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeGroupId=org.openjdk.jmh
-DarchetypeArtifactId=jmh-java-benchmark-archetype
-DgroupId=org.sample
-DartifactId=test
-Dversion=1.0

From http://openjdk.java.net/projects/code-tools/jmh/

4.构建项目
cd test
Mvn clean install

5.运行benchmark
java -jar target/benchmarks.jar

6.运行其他的一些样例:
http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/

7.使用命令行测试新的测试代码 JMHSample_01
* $ mvn clean install
* $ java -jar target/benchmarks.jar JMHSample_01

8.执行java -jar ./target/benchmarks.jar -prof perfasm报错:
[Cannot run program “perf”: error=2, 没有那个文件或目录]
Profilers failed to initialize, exiting.
原因是生成项目时用了-Dversion=1.0,此版本可能不支持
https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-java-benchmark-archetype
https://github.com/melix/jmh-gradle-plugin/issues/72

9.生成maven项目
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeGroupId=org.openjdk.jmh
-DarchetypeArtifactId=jmh-java-benchmark-archetype
-DgroupId=org.sample
-DartifactId=test19
-Dversion=1.19

10使用高级的版本还是不行,后面发现是需要安装perf、hsdis软件
https://www.sakatakoichi.com/entry/jmhperfasm

11.perf直接安装,hsdis有点麻烦:
https://www.chrisnewland.com/building-hsdis-on-linux-amd64-on-debian-369
查看系统位数:getconf LONG_BIT
Uname -a:i386为32位,i686是i386子集

12.下载
https://www.lee0211.cn/blog/hotspot-jit/
binutils-2.30.tar.gz
openjdk-7u40-fcs-src-b43-26_aug_2013.zip

1.解压openjdk后,进入hotspot/src/share/tools/hsdis
2.在hsdis下新建build,将binutils-2.30放入
3.[root@bogon hsdis]# make BINUTILS=build/binutils-2.30 报错了make: *** [build/linux-i586/hsdis-i386.so] Error 1
4.直接下载
https://github.com/jkubrynski/profiling/blob/master/bin/linux-hsdis-i386.so
5.查看jdk路径
	which java;
	ll java查看软连接,查看真实路径:
	[root@bogon alternatives]# ll java
	lrwxrwxrwx. 1 root root 70 10月 30 2015 java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.60-14.b27.fc23.i386/jre/bin/java
	
6.重命名和移动
cp linux-hsdis-i386.so ./hsdis-i386.so
cp hsdis-i386.so /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.60-14.b27.fc23.i386/jre/lib/i386/server


7.查看JAVA汇编语言:
[root@bogon JavaProgram]# java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly  A
PrintAssembly  表示打印java运行过程中的汇编(assembly code 汇编代码)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值