arthas的学习笔记

arthas

常用命令:

dashboard

arthas的学习笔记_第1张图片

sc -d 类名

可以查看jvm程序中类与类的继承关系

arthas的学习笔记_第2张图片

heapdump 替代jmap的

thread 把java进程中的所有的线程全部列出来

arthas的学习笔记_第3张图片

  • thread -b 可以直接找出死锁的线程

jvm 可以列出一些参数

arthas的学习笔记_第4张图片

jad 可以反编译

下面先列举一个小程序

/**
 * @author bwzfy
 * @create 2023/2/27
 **/
public class TT {

    public static void main(String[] args) throws IOException {
        for (;;) {
            System.in.read();
            new T().m();
        }
    }
}
/**
 * @author bwzfy
 * @create 2023/2/27
 **/
public class T {

    public void m() {
        System.out.println("1");
    }
}
  • jad TT 可以反编译java运行中的文件

arthas的学习笔记_第5张图片

redefine

可以使用类加载器重新加载class文件,不需要重启程序,就可以替换程序的功能

使用javac命令重新编译修改完成之后的java文件
将生成之后的class文件上传到远程
下面的命令加载的就是重新生成的class文件
/**
 * @author bwzfy
 * @create 2023/2/27
 **/
public class T {

    public void m() {
        System.out.println("1");
    }
}

redefine /opt/soft/authas/jad/T.class

arthas的学习笔记_第6张图片

trace

单机版的链路追踪

下面是一个用来模拟链路调用的小程序

/**
 * @author bwzfy
 * @create 2023/2/27
 **/
public class ABC {
    public static void main(String[] args) throws InterruptedException {
        for (;;) {
            new ABC().a();
        }
    }

    public void a() throws InterruptedException {
        Thread.sleep(1000);
        b();
    }

    private void b() throws InterruptedException {
        Thread.sleep(2000);
        c();
    }

    private void c() throws InterruptedException {
        Thread.sleep(3000);
    }
}

查看ABC类里面的a方法的调用链路

trace ABC a

arthas的学习笔记_第7张图片

你可能感兴趣的:(学习,笔记)