最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java匯編源碼如何查看環(huán)境搭建

 更新時(shí)間:2025年01月08日 14:26:59   作者:夜夜流光相皎潔_小寧  
這篇文章主要介紹了如何在IntelliJ IDEA開(kāi)發(fā)環(huán)境中搭建字節(jié)碼和匯編環(huán)境,以便更好地進(jìn)行代碼調(diào)優(yōu)和JVM學(xué)習(xí),首先,介紹了如何配置IntelliJ IDEA以方便查看Java字節(jié)碼文件,接著,詳細(xì)說(shuō)明了如何下載和配置HSDIS插件,以便在IDEA中查看Java方法的匯編代碼

一、簡(jiǎn)介

JVM的學(xué)習(xí)很多時(shí)候得看著字節(jié)碼和匯編代碼才好理解,而作為Java程序員來(lái)說(shuō),其實(shí)更希望在開(kāi)發(fā)環(huán)境中能查看匯編代碼,這樣其實(shí)更有助于我們平時(shí)的代碼調(diào)優(yōu)和JVM的學(xué)習(xí)。那么我們應(yīng)該如何搭建呢?跟著我一起動(dòng)手來(lái)搭建下吧。

二、在IDEA開(kāi)發(fā)環(huán)境中搭建匯編環(huán)境

2.1 在IDEA中搭建字節(jié)碼查看環(huán)境

我們都知道,Java 源文件(.java格式)要運(yùn)行,需要編譯成Java字節(jié)碼文件(.class格式),在我們做源代碼原理分析時(shí),可能需要查看字節(jié)碼文件,我們一般使用過(guò)javap -v xxx.class 命令進(jìn)行查看的,這個(gè)javap 工具是jdk開(kāi)發(fā)環(huán)境提供的一款工具,需要我們安裝好jdk和配置好jdk的環(huán)境變量;有時(shí)候我們可能希望在IDEA開(kāi)發(fā)環(huán)境中直接打印控制臺(tái)查看,那么該如何實(shí)現(xiàn)配置呢?接下來(lái)我們實(shí)現(xiàn)下。

2.1.1 搭建步驟

這里以主流的開(kāi)發(fā)工具IntelliJ IDEA 做例子:

2.1.1.1 第一步

2.1.1.2 第二步

2.1.1.3 第三步

2.1.1.4 第四步

2.1.2 驗(yàn)證

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

好了,在IDEA中搭建字節(jié)碼環(huán)境就完成了,接下來(lái)我們看下,在IDEA中如何搭建匯編環(huán)境。

2.2 在IDEA開(kāi)發(fā)環(huán)境中搭建匯編代碼查看環(huán)境

要想查看匯編代碼,我們可以通過(guò)一款工具,叫做HSDIS,它是一個(gè)Sun官方推薦的HotSpot虛擬機(jī)JIT編譯代碼的反匯編插件。

2.2.1 下載HSDIS插件

官網(wǎng)地址:

hsdis HotSpot Disassembly Plugin Downloads (chriswhocodes.com)

因?yàn)槲覀兪莣indows環(huán)境,且系統(tǒng)版本是64位的,所以就下載hsdis-amd64.dll。

2.2.2 配置HSDIS插件

將hsdis-amd64.dll安裝到 %JAVA_HOME\jre\bin\server 目錄下。

2.2.3 驗(yàn)證HSDIS插件是否安裝成功

在CMD窗口中執(zhí)行如下指令:

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

出現(xiàn)如上匯編指令,則算安裝成功。

2.2.4 在IDEA中配置

在IDEA開(kāi)發(fā)環(huán)境中,我們那個(gè)類需要打印匯編代碼,就在哪個(gè)類的運(yùn)行配置中配置打印信息,如下:

配置如下指令:

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

然后直接點(diǎn)擊運(yùn)行測(cè)試用例,我們就會(huì)在控制臺(tái)看到匯編代碼信息:

在我們配置的日志路徑下,也會(huì)生成有相關(guān)的匯編代碼信息:

好了,我們?cè)贗DEA中打印匯編代碼的配置就做好了。

三、JITWatch 環(huán)境搭建

JITWatch 是 HotSpot JIT 編譯器的日志分析器和可視化程序,它能幫助我們更加詳細(xì)的查閱JVM匯編代碼和JIT編譯詳情。下面我們來(lái)介紹下該如何安裝和使用它。

3.1 JITWatch 下載

官網(wǎng):

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 運(yùn)行

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

3.3 使用

3.3.1 導(dǎo)入日志

3.3.2 查看匯編

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了JDBC實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • java中Optional的使用詳細(xì)解析

    java中Optional的使用詳細(xì)解析

    這篇文章主要介紹了java新特性之Optional的詳細(xì)解析,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java的volatile和sychronized底層實(shí)現(xiàn)原理解析

    Java的volatile和sychronized底層實(shí)現(xiàn)原理解析

    文章詳細(xì)介紹了Java中的synchronized和volatile關(guān)鍵字的底層實(shí)現(xiàn)原理,包括字節(jié)碼層面、JVM層面的實(shí)現(xiàn)細(xì)節(jié),以及鎖的類型和MESI協(xié)議在多核處理器中的作用,文章還探討了synchronized和volatile的區(qū)別,以及如何通過(guò)Atomic類來(lái)實(shí)現(xiàn)更細(xì)粒度的原子操作,感興趣的朋友一起看看吧
    2025-03-03
  • Java編程實(shí)現(xiàn)A*算法完整代碼

    Java編程實(shí)現(xiàn)A*算法完整代碼

    這篇文章主要介紹了Java編程實(shí)現(xiàn)A*算法完整代碼,簡(jiǎn)單介紹了a星算法,然后分享了完整測(cè)試代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11
  • Session過(guò)期后實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)登錄頁(yè)面

    Session過(guò)期后實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)登錄頁(yè)面

    這篇文章主要介紹了Session過(guò)期后實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)登錄頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • springboot中Getmapping獲取參數(shù)的實(shí)現(xiàn)方式

    springboot中Getmapping獲取參數(shù)的實(shí)現(xiàn)方式

    這篇文章主要介紹了springboot中Getmapping獲取參數(shù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    springboot+thymeleaf+shiro標(biāo)簽的實(shí)例

    這篇文章主要介紹了springboot+thymeleaf+shiro標(biāo)簽的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 基于Java實(shí)現(xiàn)Json文件轉(zhuǎn)換為Excel文件

    基于Java實(shí)現(xiàn)Json文件轉(zhuǎn)換為Excel文件

    這篇文章主要為大家詳細(xì)介紹了如何利用Java實(shí)現(xiàn)Json文件轉(zhuǎn)換為Excel文件,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-12-12
  • idea重新下載已刪除的maven依賴包操作

    idea重新下載已刪除的maven依賴包操作

    這篇文章主要介紹了idea重新下載已刪除的maven依賴包操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • idea中的update?project按鈕使用

    idea中的update?project按鈕使用

    這篇文章主要介紹了idea中的update?project按鈕使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論

巴彦县| 勃利县| 常宁市| 化州市| 仪征市| 永德县| 湘潭县| 肃北| 额济纳旗| 宣汉县| 澄城县| 耿马| 阜康市| 余庆县| 西畴县| 察隅县| 阿图什市| 蓬溪县| 双辽市| 贵定县| 济阳县| 卫辉市| 青龙| 龙南县| 张家港市| 灵武市| 白山市| 新田县| 车险| 开封县| 姚安县| 玛曲县| 徐汇区| 扬中市| 永修县| 武宣县| 大竹县| 恩平市| 灵武市| 高平市| 策勒县|