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源码
  • 相关阅读:
    初识Kafka
    初学Linux (Linux_note)
    Zookeeper_ACL
    Zookeeper简单配置
    getWindow().setFlags
    设置session失效时间
    Android开发者必知的5个开源库
    oracle A用户访问B用户的表aa
    oracle 根据约束名查表名
    java ftp上载下传 遇到的问题
  • 原文地址:https://www.cnblogs.com/mwss/p/13461027.html
Copyright © 2011-2022 走看看