zoukankan      html  css  js  c++  java
  • 如何查看jvm进程中加载的class文件

    如何查看jvm进程中加载的class文件

    像spring、dubbo等框架都用到了动态代理等java字节码技术,我们在查看源码的时候,有时必须去查看框架生成的class文件才能知道具体的功能是如何实现的。

    博主知道的有2种方式,分享给大家。

    1. 利用jre提供的工具。

      • 新建一个bat脚本,命名为查看jvm进程中的class.bat

      • 编辑脚本。

        java -classpath "%JAVA_HOME%libsa-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源码
  • 相关阅读:
    【递归】拆分自然数
    HDOJ3068最长回文
    博弈论——尼姆博奕
    vijos P1047最小公倍数
    Eular质数筛法-hiho一下 第九十三周
    hdoj-5652 India and China Origins二分+bfs
    hdoj-1166排兵布阵 简单的树状数组
    hdoj-5641 king's phone
    hdoj-1548简单的bfs题目
    命令中"|"的意义
  • 原文地址:https://www.cnblogs.com/mwss/p/13461027.html
Copyright © 2011-2022 走看看