Alibaba Arthas学习与使用

Alibaba Arthas学习与使用

目录

下载安装

# 下载
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
# 启动arthas
java -jar arthas-boot.jar
# 如果端口号被占用(arthas已经粘附一个进程),可以换另一个端口号执行
java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

卸载

rm -rf ~/.arthas/
rm -rf ~/logs/arthas

退出

可以使用quit或exit命令,下次连接会自动连接上粘附的进程。stop退出结束连接。

快捷键

  • keymap 显示Arthas对应的快捷键
    在这里插入图片描述

重点部分: 命令

dashboard

显示当前系统实时数据面板,按q或ctrl+c退出

在这里插入图片描述

thread

查看当前jvm的线程堆栈信息
在这里插入图片描述

jvm

查看当前JVM的信息

在这里插入图片描述

sysprop

查看和修改jvm的系统属性
在这里插入图片描述

sysenv

查看当前jvm的环境属性
在这里插入图片描述

vmoption

查看,更新jvm诊断相关的参数
在这里插入图片描述

getstatic

通过getstatic命令可以方便的查看类的静态属性

getstatic 类名 属性名

在这里插入图片描述

ognl

执行ognl表达式,这是从3.0.5版本新增的功能

OGNl语法

https://commons.apache.org/proper/commons-ognl/language-guide.html

在这里插入图片描述
在这里插入图片描述

sc

查看jvm已加载的类信息,"Search Class"的缩写,这个命令可以搜索出所有已经加载到jvm中的class信息,sc默认开启了子类匹配功能,也就是说当前类的子类也会被搜索出来,想要精准匹配,需要打开 optionsdisable-sub-class true 的开关

在这里插入图片描述

sm

"Search Method"的缩写,搜索所有已经加载了class信息的方法信息。
sm命令只能看到由当前类声明的方法,父类无法看到

在这里插入图片描述

jad

反编译指定已加载类的源码
在这里插入图片描述

//反编译指定类
jad java.lang.String
//反编译指定类中的指定方法
jad java.lang.String trim

mc

在内存中把源代码编译成字节码

//编译
mc /root/Hello.java
//编译到指定目录
mc /root/Hello.java -d /tmp

redefine

把新生成的字节码文件在内存中执行,加载外部的.class文件,redefine到jvm里

注意:redefine后原来的类不可恢复,redefine有可能失败(比如增加了新的成员变量)
reset命令对redefine的类无效。如果想重置,需要redefine原始的字节码。
redefine命令和jad/watch/trace/monitor/tt等命令会冲突。执行完redefine之后,如果再执行上面提到的命令,则会把redefine的字节码重置。
redefine的限制
  • 不允许新增加成员变量和方法,只允许在原有的上面修改
  • 正在执行的函数,没有退出不能生效。
结合jad/mc命令使用
# 1.使用jad反编译demo.MathGame输出到/root/MathGame.java
jad --source-only demo.MathGame > /root/MathGame.java

# 2.按上面的代码编辑完,使用mc对内存中的新代码编译
mc /root/MathGame.java -d /root

# 3.使用redefine命令加载新的字节码
redefine /root/demo/MathGame.class

dump

将已加载类的字节码文件保存到特定目录: logs/arthas/classdump/

在这里插入图片描述
在这里插入图片描述

classloader

获取类加载器信息,classloader 命令将jvm中所有classloader的信息统计出来,并可以展示继承树,urls等。可以让指定的classloader去getResources,打印出所有查找到的resources的url。对于ResourceNotFoundException异常比较有用。

在这里插入图片描述

在这里插入图片描述

monitor

监控指定类中方法的执行情况

在这里插入图片描述

在这里插入图片描述

watch

观察指定方法的调用情况,能观察到的范围:返回值、抛出的异常、入参,通过OGNL表达式进行对应变量的查看

在这里插入图片描述
在这里插入图片描述

trace

对方法内部调用进行跟踪,并输出方法路径上每个节点上的耗时
在这里插入图片描述

在这里插入图片描述

stack

输出方法被调用的调用路径

在这里插入图片描述

tt

time-tunnel 时间隧道
记录下指定方法每次调用的入参和返回值,并能对这些不同时间下调用的信息进行观测。

在这里插入图片描述
在这里插入图片描述

options

arthas全局开关

在这里插入图片描述

profiler

生成火焰图,profiler命令支持生成应用热点火焰图。本质上是通过不断采样,然后把采集结果生成火焰图。命令基本运行结构是profiler命令 [命令参数]

启动profiler
# 默认情况下生成的是cpu的火焰图,即event为cpu。可以用--event参数来指定
profile start
# 停止采样,并生成火焰图
profile stop

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张矜持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值