查看Java的汇编指令

举报
消失er 发表于 2019/01/23 16:11:38 2019/01/23
【摘要】 通过javap 命令,可以将字节码文件反编译。如通过下面的命令:javap -c Xxxx.class而有时候想看某些JDK底层实现,发现反编译得到的代码并没有什么帮助,因此本文介绍如何查看Java的汇编指令,查看Java代码最真实的运行细节。Java本身提供这个支持,但需要引入而外的包(hsdis-amd64.dylib)。Mac下:https://github.com/evolvedmi...

通过javap 命令,可以将字节码文件反编译。如通过下面的命令:


javap -c Xxxx.class


而有时候想看某些JDK底层实现,发现反编译得到的代码并没有什么帮助,因此本文介绍如何查看Java的汇编指令,查看Java代码最真实的运行细节。


Java本身提供这个支持,但需要引入而外的包(hsdis-amd64.dylib)。


Mac下:


https://github.com/evolvedmicrobe/benchmarks/blob/master/hsdis-amd64.dylib


下载下来后,将其放置到jre lib目录下即可。

 


查看Java的汇编指令

1、可以使用命令


java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly Main (Main是class文件)


2、在IDEA配置VM options,打印汇编指令,如下图。


-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly




这种方式,在运行程序时,直接在控制台打印汇编指令。




如果遇到:


Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output 

Could not load hsdis-amd64.dylib; library  not loadable; PrintAssembly is disabled

下载上面的库文件放到jre/lib下即可。


 



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。