Java 诊断工具 Arthas安装使用

本文介绍了如何在Windows系统中下载和安装Arthasjar包,以及其提供的各种命令,如监控面板(dashboard),线程堆栈查看(thread),类与方法搜索(sc,sm),反编译(jad),追踪(trace),观察(watch)和内存管理(vmtool)等,帮助开发者深入诊断Java应用性能和问题。
摘要由CSDN通过智能技术生成

一、下载jar包

 https://arthas.aliyun.com/arthas-boot.jar

命令列表 | arthas

二、安装(windows系统)

cmd窗口,进入到jar的所在路径,运行:java -jar arthas-boot.jar

如图选项2,是本地的一个正在启动的服务,输入2,回车,即开始监控这个java服务

注意:如果已经在监控一个端口,想要关闭并监控另一个端口

如下是关闭25648端口命令

java -jar arthas-boot.jar --telnet-port 25648 --http-port -1

关闭后即可重新选择

三、常用命令

1、dashboard命令  进入监控面板

数据说明:

    ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应
    NAME: 线程名
    GROUP: 线程组名
    PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
    STATE: 线程的状态
    CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
    TIME: 线程运行总时间,数据格式为分:秒
    INTERRUPTED: 线程当前的中断位状态
    DAEMON: 是否是daemon线程

2、thread命令  查看当前 JVM 的线程堆栈信息

**thread **查询全部线程
thread -n 5 打印前5个最忙的线程并打印堆栈
thread -all 显示所有匹配的线程
thread -n 3 -i 1000 列出1000ms内最忙的3个线程栈
thread –state WAITING 查看指定状态的线程,(TIMED_WAITI、WAITING、RUNNABLE等等)
thread -b 找出阻塞其他线程的线程,当出现死锁后,会提示你出现死锁的位置

3、sc 查看 JVM 已加载的类详细信息

Search-Class 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,sc -d *MathGame

如果搜索的是接口,还会搜索所有的实现类。比如查看所有的 Filter 实现类:

sc javax.servlet.Filter

-d 参数可以打印出类加载的具体信息,方便定位类加载问题

sc 支持通配符,比如搜索所有的 StringUtils:

   sc *StringUtils

打印类的 Field 信息:

     sc -d -f demo.MathGame

 4、sm 查看已加载类的方法信息

Search-Method 的简写,这个命令能搜索出所有已经加载了 Class 信息的方法信息。

sm 命令只能看到由当前类所声明 (declaring) 的方法,父类则无法看到

查看 String 类的全部方法:

sm java.lang.String

查看具体方法的信息:

sm java.lang.String toString

通过 -d 参数可以打印函数的具体属性,展示每个方法的详细信息():

sm -d com.freemud.calculation.service.impl.CalculationService


 5、jad  反编译指定已加载类的源代码

    jad  com.entity.CartGoodsBo 将内存加载的class反编成代码和classloader信息(注:不是源代码)
    jad --source-only demo.MathGame  将内存加载的class反编译成java代码

 6、trace 方法内部调用路径,并输出方法路径上的每个节点上耗时

监控追踪OrderRightsServiceImpl 类下面的getOrderRights方法      

trace com.freemud.calculation.service.impl.OrderRightsServiceImpl getOrderRights

7、watch 观察方法调用情况

params查看入参,returnObj 查看返回

watch com.freemud.calculation.service.impl.RightsQueryServiceImpl queryMemberPaidRights params
watch com.freemud.calculation.service.impl.RightsQueryServiceImpl queryMemberPaidRights returnObj

8、vmtool 查询内存对象,强制 GC 等功能

强制GC:vmtool --action forceGc

获取对象:vmtool --action getInstances --className java.lang.String --limit 10

interrupt 指定线程:vmtool --action interruptThread -t 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值