如何查看jvm進程中加載的class文件


如何查看jvm進程中加載的class文件

像spring、dubbo等框架都用到了動態代理等java字節碼技術,我們在查看源碼的時候,有時必須去查看框架生成的class文件才能知道具體的功能是如何實現的。

博主知道的有2種方式,分享給大家。

  1. 利用jre提供的工具。

    • 新建一個bat腳本,命名為查看jvm進程中的class.bat

    • 編輯腳本。

      java -classpath "%JAVA_HOME%\lib\sa-jdi.jar" sun.jvm.hotspot.HSDB
      

      注:其中%JAVA_HOME%為jdk目錄

    • 復制%JAVA_HOME%/jre/bin目錄下面的sawindbg.dll/jre/bin目錄下面。

    • 在命令行輸入jps命令,查看需要查看class文件所在的線程的pid

    • 雙擊腳本,運行。

    • 選擇file->Attach to Hotspot process ,然后輸入process ID,就是上面找到的pid

    • 選擇Tools->Class Browser,可以查看該線程下面所有的class。

    • 選中某個class記錄,點擊 Create .class File ,就會腳本目錄生成一個目錄,目錄和class文件包名相對應。

    • 打開反編譯工具,指定剛才生成的class文件,便可以查看java源代碼了

  2. 利用阿里開源的【阿爾薩斯】工具

    教程文檔

    • java -jar arthas-boot.jar 運行arthas
    • 輸入需要查看的線程編號
    • 輸入sc ${需要檢索的類名},就可以查看相關的類名
    • 輸入jad ${包名},便可以反編譯class源碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM