Java 汇编源码查看环境搭建

目录

一、简介

二、在IDEA开发环境中搭建汇编环境

[2.1 在IDEA中搭建字节码查看环境](#2.1 在IDEA中搭建字节码查看环境)

[2.1.1 搭建步骤](#2.1.1 搭建步骤)

[2.1.1.1 第一步](#2.1.1.1 第一步)

[2.1.1.2 第二步](#2.1.1.2 第二步)

[2.1.1.3 第三步](#2.1.1.3 第三步)

[2.1.1.4 第四步](#2.1.1.4 第四步)

[2.1.2 验证](#2.1.2 验证)

[2.2 在IDEA开发环境中搭建汇编代码查看环境](#2.2 在IDEA开发环境中搭建汇编代码查看环境)

[2.2.2 配置HSDIS插件](#2.2.2 配置HSDIS插件)

[2.2.3 验证HSDIS插件是否安装成功](#2.2.3 验证HSDIS插件是否安装成功)

[2.2.4 在IDEA中配置](#2.2.4 在IDEA中配置)

[三、JITWatch 环境搭建](#三、JITWatch 环境搭建)

[3.1 JITWatch 下载](#3.1 JITWatch 下载)

[3.2 运行](#3.2 运行)

[3.3 使用](#3.3 使用)

[3.3.1 导入日志](#3.3.1 导入日志)

[3.3.1 查看汇编](#3.3.1 查看汇编)


一、简介

JVM的学习很多时候得看着字节码和汇编代码才好理解,而作为Java程序员来说,其实更希望在开发环境中能查看汇编代码,这样其实更有助于我们平时的代码调优和JVM的学习。那么我们应该如何搭建呢?跟着我一起动手来搭建下吧。

二、在IDEA开发环境中搭建汇编环境

2.1 在IDEA中搭建字节码查看环境

我们都知道,Java 源文件(.java格式)要运行,需要编译成Java字节码文件(.class格式),在我们做源代码原理分析时,可能需要查看字节码文件,我们一般使用过javap -v xxx.class 命令进行查看的,这个javap 工具是jdk开发环境提供的一款工具,需要我们安装好jdk和配置好jdk的环境变量;有时候我们可能希望在IDEA开发环境中直接打印控制台查看,那么该如何实现配置呢?接下来我们实现下。

2.1.1 搭建步骤

这里以主流的开发工具IntelliJ IDEA 做例子:

2.1.1.1 第一步
2.1.1.2 第二步
2.1.1.3 第三步
2.1.1.4 第四步

2.1.2 验证

在需要查看字节码的类中右键,打开External Tools,选择我们刚才新建的扩展工具javap -v,执行

好了,在IDEA中搭建字节码环境就完成了,接下来我们看下,在IDEA中如何搭建汇编环境。

2.2 在IDEA开发环境中搭建汇编代码查看环境

要想查看汇编代码,我们可以通过一款工具,叫做HSDIS,它是一个Sun官方推荐的HotSpot虚拟机JIT编译代码的反汇编插件。

2.2.1 下载HSDIS插件

官网地址:

hsdis HotSpot Disassembly Plugin Downloads (chriswhocodes.com)

因为我们是windows环境,且系统版本是64位的,所以就下载hsdis-amd64.dll。

2.2.2 配置HSDIS插件

将hsdis-amd64.dll安装到 %JAVA_HOME\jre\bin\server 目录下。

2.2.3 验证HSDIS插件是否安装成功

在CMD窗口中执行如下指令:

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

出现如上汇编指令,则算安装成功。

2.2.4 在IDEA中配置

在IDEA开发环境中,我们那个类需要打印汇编代码,就在哪个类的运行配置中配置打印信息,如下:

配置如下指令:

-server -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+LogCompilation -XX:LogFile=D:\software_development\data\log\%t-hotspot.log

然后直接点击运行测试用例,我们就会在控制台看到汇编代码信息:

在我们配置的日志路径下,也会生成有相关的汇编代码信息:

好了,我们在IDEA中打印汇编代码的配置就做好了。

三、JITWatch 环境搭建

JITWatch 是 HotSpot JIT 编译器的日志分析器和可视化程序,它能帮助我们更加详细的查阅JVM汇编代码和JIT编译详情。下面我们来介绍下该如何安装和使用它。

3.1 JITWatch 下载

官网:

GitHub - AdoptOpenJDK/jitwatch: Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.

3.2 运行

java -jar jitwatch-ui-1.4.9-shaded-win-x64.jar

3.3 使用

3.3.1 导入日志

3.3.1 查看汇编

好了,本次内容就分享到这,后续会继续输出相关内容文章。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

相关推荐
tedcloud1232 分钟前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust
星间都市山脉3 分钟前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
深入云栈8 分钟前
Netty 4.2.x 源码深度解析 (十三):Epoll 传输 —— Linux 高性能 IO 的 Netty 实现
java·后端
ynchyong9 分钟前
Linux nohup 后台服务合并标准错误输出到一个文件
java·linux·运维
用户31268748772011 分钟前
Lombok 的 @Data 到底怎么工作的?Java 注解处理器实战全链路拆解
java
Tairitsu_H21 分钟前
[C++] C++11 Lambda与包装器深度解析
开发语言·c++·c++11·lambda·包装器
傲世仙尊29 分钟前
从磁盘硬件到Ext文件系统-Linux磁盘级文件系统学习笔记
linux·运维·服务器·开发语言·c++
小羊没烦恼!1 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
天远API1 小时前
零信任架构实战:基于天远单人婚姻查询构建自动化联合贷款审计网关
java·人工智能·架构·自动化
九皇叔叔1 小时前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base