
javap是jdk自带的反编译工具,可以通过控制台查看字节码文件内容
javap -v 字节码文件

idea可以安装这个插件,直接在插件市场就能搜索到,安装完成后,选中class文件,点击view,就可以看到对应选项



官网文档https://arthas.aliyun.com/
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率
下载地址https://arthas.aliyun.com/arthas-boot.jar
git指定版本下载地址Releases · alibaba/arthas (github.com)
编写如下代码并运行
public class HelloWorld {
    public static void main(String[] args){
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        });
        thread.start();
    }
}
下载后java -jar启动arthas,就能看到运行得代码

输入对应的编号,我的是2,然后回车就能进入对应的线程

arthsa命令列表命令列表 | arthas (aliyun.com)
当前系统的实时数据面板

eg: dashboard -i 2000 -n 3
间隔两秒一次,输出三次

dump 已加载类的 bytecode 到特定目录

eg:dump -d D:/ HelloWorld 将HelloWorld得类的字节码信息导入到D盘根目录下

查看对应目录

反编译指定已加载类的源码

eg:jad HelloWorld

JHSDB(Java HotSpot Diagnostic and Debugging tool)是Java Development Kit (JDK) 9及更高版本中引入的一个诊断和调试工具。它用于在运行时分析Java应用程序,可以附加到正在运行的Java进程或核心转储文件以进行后事调试。JHSDB结合了之前多个独立工具的功能,比如jdb、jmap、jinfo、jstack等,提供了一个统一的界面来进行更深入的诊断和故障排查。
主要功能包括:
使用JHSDB的基本步骤:
jhsdb命令行工具启动。attach命令附加到正在运行的Java进程,可以通过进程ID或进程名指定。下面编写一个类内容如下,并启动运行
public class HsdbDemo {
    public static final int i=0;
    public static void main(String[] args) throws IOException {
        new HsdbDemo();
        System.in.read();
    }
}
然后启动jdk得bin目录下的sa-jdi.jar,我的jdk版本是java11,java11取消了这个jar,用jhsdb做了替代,执行jhsdb hsdb


启动后我们需要连接到指定得进程,这里需要一个进程id,这个进程id通过jps命令可以查看

输入对应线程id就可以了

然后查看对象直方图

搜索到对应对象

双击进入,然后查看详细信息
