使用arthas定位java问题

  1. 启动arthas,执行以下命令会提示所有java进程,选择进程id
wget https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
  1. 使用dashboard或thread列出所有线程
dashboard
thread
  1. 找出占用cpu或内存较高的线程,使用thread n列出线程堆栈
thread 1

输出:
"main" Id=1 TIMED_WAITING
at java.lang.Thread.sleep(Native Method)
at java.lang.Thread.sleep(Thread.java:340)
at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
at demo.MathGame.main(MathGame.java:17)

  1. 通过sc查找出所有已加载的类
sc -d *MathGame

输出:
class-info demo.MathGame
code-source /data/arthas/arthas-demo.jar
name demo.MathGame

  1. 反编译类
jad demo.MathGame
  1. 监控类的输入输出
watch demo.MathGame primeFactors returnObj
  1. 退出arthas
stop

https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn

原文地址:https://www.cnblogs.com/bincoding/p/14167785.html