Java匯編源碼如何查看環(huán)境搭建
一、簡介
JVM的學習很多時候得看著字節(jié)碼和匯編代碼才好理解,而作為Java程序員來說,其實更希望在開發(fā)環(huán)境中能查看匯編代碼,這樣其實更有助于我們平時的代碼調優(yōu)和JVM的學習。那么我們應該如何搭建呢?跟著我一起動手來搭建下吧。
二、在IDEA開發(fā)環(huán)境中搭建匯編環(huán)境
2.1 在IDEA中搭建字節(jié)碼查看環(huán)境
我們都知道,Java 源文件(.java格式)要運行,需要編譯成Java字節(jié)碼文件(.class格式),在我們做源代碼原理分析時,可能需要查看字節(jié)碼文件,我們一般使用過javap -v xxx.class 命令進行查看的,這個javap 工具是jdk開發(fā)環(huán)境提供的一款工具,需要我們安裝好jdk和配置好jdk的環(huán)境變量;有時候我們可能希望在IDEA開發(fā)環(huán)境中直接打印控制臺查看,那么該如何實現(xiàn)配置呢?接下來我們實現(xiàn)下。
2.1.1 搭建步驟
這里以主流的開發(fā)工具IntelliJ IDEA 做例子:
2.1.1.1 第一步

2.1.1.2 第二步

2.1.1.3 第三步

2.1.1.4 第四步


2.1.2 驗證
在需要查看字節(jié)碼的類中右鍵,打開External Tools,選擇我們剛才新建的擴展工具javap -v,執(zhí)行


好了,在IDEA中搭建字節(jié)碼環(huán)境就完成了,接下來我們看下,在IDEA中如何搭建匯編環(huán)境。
2.2 在IDEA開發(fā)環(huán)境中搭建匯編代碼查看環(huán)境
要想查看匯編代碼,我們可以通過一款工具,叫做HSDIS,它是一個Sun官方推薦的HotSpot虛擬機JIT編譯代碼的反匯編插件。
2.2.1 下載HSDIS插件
官網地址:
hsdis HotSpot Disassembly Plugin Downloads (chriswhocodes.com)

因為我們是windows環(huán)境,且系統(tǒng)版本是64位的,所以就下載hsdis-amd64.dll。
2.2.2 配置HSDIS插件
將hsdis-amd64.dll安裝到 %JAVA_HOME\jre\bin\server 目錄下。
2.2.3 驗證HSDIS插件是否安裝成功
在CMD窗口中執(zhí)行如下指令:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version

出現(xiàn)如上匯編指令,則算安裝成功。
2.2.4 在IDEA中配置
在IDEA開發(fā)環(huán)境中,我們那個類需要打印匯編代碼,就在哪個類的運行配置中配置打印信息,如下:



配置如下指令:
-server -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:+LogCompilation -XX:LogFile=D:\software_development\data\log\%t-hotspot.log

然后直接點擊運行測試用例,我們就會在控制臺看到匯編代碼信息:

在我們配置的日志路徑下,也會生成有相關的匯編代碼信息:

好了,我們在IDEA中打印匯編代碼的配置就做好了。
三、JITWatch 環(huán)境搭建
JITWatch 是 HotSpot JIT 編譯器的日志分析器和可視化程序,它能幫助我們更加詳細的查閱JVM匯編代碼和JIT編譯詳情。下面我們來介紹下該如何安裝和使用它。
3.1 JITWatch 下載
官網:

3.2 運行
java -jar jitwatch-ui-1.4.9-shaded-win-x64.jar

3.3 使用
3.3.1 導入日志




3.3.2 查看匯編


總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java的volatile和sychronized底層實現(xiàn)原理解析
文章詳細介紹了Java中的synchronized和volatile關鍵字的底層實現(xiàn)原理,包括字節(jié)碼層面、JVM層面的實現(xiàn)細節(jié),以及鎖的類型和MESI協(xié)議在多核處理器中的作用,文章還探討了synchronized和volatile的區(qū)別,以及如何通過Atomic類來實現(xiàn)更細粒度的原子操作,感興趣的朋友一起看看吧2025-03-03
springboot中Getmapping獲取參數(shù)的實現(xiàn)方式
這篇文章主要介紹了springboot中Getmapping獲取參數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
springboot+thymeleaf+shiro標簽的實例
這篇文章主要介紹了springboot+thymeleaf+shiro標簽的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
基于Java實現(xiàn)Json文件轉換為Excel文件
這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)Json文件轉換為Excel文件,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2022-12-12

