成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 性能分析工具 JITWatch 配置與使用

開發 開發工具
本文旨在為初學者提供一個全面而簡潔的 JITWatch 上手指南,通過實際案例和詳細步驟介紹如何利用這一工具進行高效的性能分析與優化。

在當今軟件開發領域,性能優化成為了提升應用質量和用戶體驗的重要環節。JITWatch 作為一款強大的工具,能夠幫助開發者深入了解 Java 應用的即時編譯(Just-In-Time Compilation, JIT)過程,從而有效識別和解決性能瓶頸。本文旨在為初學者提供一個全面而簡潔的 JITWatch 上手指南,通過實際案例和詳細步驟介紹如何利用這一工具進行高效的性能分析與優化。

快速上手JITWatch

1. 下載與配置

我們首先需要到GitHub上下載對應的源碼包,對應的地址為:https://github.com/AdoptOpenJDK/jitwatch

需要注意的是1.4.2以上的版本可能存在亂碼的情況,所以我們建議clone的時候盡量選擇1.4.2及以下的版本,這里筆者也給出自己的克隆指令:

git clone --branch 1.4.1  git@github.com:AdoptOpenJDK/jitwatch.git

完成之后,我們還需要進行hsdis的下載安裝。

完成下載之后,我們只需要將其放到系統jdk目錄的\jre\bin\server目錄下:

2. 基礎使用演示

通過上述步驟我們完成了最基礎的配置和安裝,接下來我們就來一個比較基礎的演示,我們到jitwatch目錄下執行如下命令啟動程序:

mvn clean compile test exec:java

完成啟動后我們點擊sandbox:

點擊后我們可以看到一個基礎的帶有基本代碼示例的界面,我們點擊配置:

然后勾選顯示反編譯和顯示Intel的匯編碼,完成后點擊save:

完成這些配置后,回到默認界面我們直接點擊run,即可看到對應的字節碼和匯編碼指令:

3. 基于jitwatch了解volatile可見性的匯編語義

我們再來一點進階的使用,筆者的maven項目有下面這樣一段代碼,我們希望查看volatile底層匯編碼的實現:

private volatile static int num = 0;

    public static void main(String[] args) throws InterruptedException {
        num++;
    }

對此我們首先打開jitwatch,然后點擊配置選擇上述代碼對應的代碼路徑和字節碼路徑:

然后找到我們的項目,添加如下JVM參數并運行項目:

-Xcomp  -XX:+UnlockDiagnosticVMOptions  -XX:+PrintAssembly  -XX:+LogCompilation  -XX:LogFile=jit.log

完成運行后,我們會在項目中看到一個名為jit.log的文件:

最后我們回到jitwatch打開這個日志:

最后點擊以下start,此時程序就會處理字節碼和匯編碼指令的解析和映射:

完成后,找到我們代碼的包路徑,點擊main方法:

最終我們就可以看到對應volatile自增代碼段對應的字節碼和匯編碼,如下便是num++的字節碼的復合操作:

0: getstatic       #2   // Field num:I
3: iconst_1        
4: iadd            
5: putstatic       #2   // Field num:I
8: return

對應的匯編如下:

  • 將num放到寄存器
  • 執行inc自增
  • 通過lock前綴將cpu緩存中累加的num強制寫回內存中
0x00000000039605b6: mov 0x68(%rsi),%edi  ;*getstatic num
                                         ; - com.sharkchili.Main::main@0 (line 11)
0x00000000039605b9: inc %edi
0x00000000039605bb: mov %edi,0x68(%rsi)
0x00000000039605be: lock addl $0x0,(%rsp)  ;*putstatic num
                                           ; - com.sharkchili.Main::main@5 (line 11)

對應的觀測截圖如下,可以看到我們可以基于代碼段做到字節碼和匯編碼的對照:

責任編輯:趙寧寧 來源: 寫代碼的SharkChili
相關推薦

2017-06-12 18:48:00

Android性能分析工具

2013-03-06 10:24:12

ksar工具系統性能

2011-08-15 22:10:08

Oracle性能分析工

2018-11-27 11:35:32

systemtapMySQL調試工具

2021-05-18 10:18:15

Java

2023-02-02 09:13:12

Hive壓縮使用性能分析

2022-09-28 14:13:03

Linux工具

2022-01-26 15:07:04

bytrace工具OpenHarmon

2019-05-10 11:13:19

分析工具Java

2012-03-30 10:11:42

Java

2015-09-14 10:41:51

PHP性能分析微觀分析

2015-08-18 11:44:02

PHP性能分析宏觀分析

2024-02-02 15:21:08

工具頁面性能

2015-05-25 14:13:18

Yahoo MySQL性能分析工開源

2011-04-02 10:29:20

Linux工具

2022-03-21 15:02:05

Harmonyhiperf鴻蒙

2024-11-13 15:18:51

JITWatch開發

2024-02-26 00:02:00

開發Go

2014-07-03 09:39:34

Java內存分析mat工具

2017-05-17 15:09:46

Linux分析性能工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久久久久| 国产精品成人一区二区三区 | 精品国产乱码久久久久久88av | 国产精品成人av | 亚洲国产欧美91 | 日日干干夜夜 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 91精品久久久久久久久久 | 亚州av在线| 日韩av在线中文字幕 | 成人午夜精品 | 久优草 | 国产成人高清成人av片在线看 | 国产一区二区精华 | 婷婷综合激情 | 在线免费观看毛片 | 日韩三级在线 | 亚洲精品乱码 | 99视频在线免费观看 | 天色综合网 | 亚洲一页| 中国一级特黄真人毛片 | 久久伊人亚洲 | 97影院在线午夜 | 黑色丝袜三级在线播放 | 日本黄色短片 | 欧洲精品久久久久毛片完整版 | 99久久久久久99国产精品免 | 国产激情在线 | 国产亚洲网站 | 国产一级免费视频 | 中文字幕精品一区久久久久 | 国产高清自拍视频在线观看 | 亚洲综合在线网 | 亚洲视频中文 | 国产精品18hdxxxⅹ在线 | 午夜精品久久久久久久久久久久久 | 欧美日韩黄色一级片 | 欧美福利三区 | 久久国产亚洲 | 日韩成人久久 |