arthas诊断工具
创始人
2024-02-09 08:49:56

1.安装
linux: curl -o https://alibaba.github.io/arthas/arthas-boot.jar   //是O不是零 浏览直接访问https://alibaba.github.io/arthas/arthas-boot.jar
在运行程序之前,需要运行一个java进程在内存种
java -jar arthas-boot.jar
按序号选择诊断的进程  选择序号回车
2.卸载
linux:
rm -rf ~/.arthas
rm -rf  ~/logs/arthas
windows
C:\Users\admin\.arthas
C:\Users\admin\logs/arthas
3.启动demo
cd ~/.arthas/lib/3.6.7/arthas/
java -jar math-game.jar
启动
java -jar arthas-boot.jar
端口号被占用
java -jar arthas-boot.jar  --telnet-port 9998 --http-port -1
4.基础命令
exit/quit        //退出不断开连
stop         //停止完全退出
dashboard   //打开虚拟机内存仪表板   q ctrl+c 都可以退出
=============================
dashboard  模块内容
ID  //运行的所有线程
memory  //内存使用情况
runtime   //jvm运行状态
=============================
thread   //查看线程
thread 1  //查看ID为1的线程信息
jad 包名.类名  //反编译
watch    包名.类名  方法名  返回值     //监测    watch demo.MathGame primeFactors returnObj
=======================
help  //查看所有命令的帮助信息
cat    //显示某个文件内容
cls   //清屏
grep  // 显示某个文件的字符串    参数:-n //显示行号   -i  //忽略大小写查找   -m 行数   //最大显示行数  -e "正则表达式"  //使用正则表达式查找
sysprop  //显示所有信息
pwd   //显示当前的工作目录路径
======================
session  //查看当前会话的信息
reset  类名  //将arthas增强的类还原,服务器关闭所有增强也会重置   参数: 类名    *List    不带参数还原所有
version  //加载当前artchas版本号
history  // 显示所有的执行命令
keyma[  //展示所有快捷键
ctrl+c  //终止当前命令
ctrl+z  //挂起当前命令   bg/fg 重新支持此命令 或者kill掉
ctrl+a //回到行首
crtl+e //回到末尾


=====================

5.jvm 命令
dashboard  //仪表板

 


thread      //线程信息  参数:id  //查看线程     -n 3 //查看当前最忙的几个线程   -b  //找出当前线程阻塞其他线程的线程
  -i 200  //指定cpu采样的时间间隔毫秒 

--state waiting //查看所有等待的线程


jvm         //查看JVM虚拟机信息
sysprop    //查看和修改系统信息       sysprop KEY VALUE  //修改      sysprop KEY //查看
=====================
sysenv    //查看当前Java环境属性
vmoption   //查看JVM虚拟机参数     vmoption KEY VALUE  //修改   vmoption KEY //查看
getstatic   类名 属性  //查看静态的类和静态的属性   getstatic  demo.MathGame  random
ognl   express   -c  -x //ognl  语法     express  //执行的表达式   c: 执行表达式的类加载器,默认是系统类加载器  x num:结果对象展开层次
===========================
ognl '@demo.MathGame@random'  //获取静态属性
ognl '#value1=@System@getProperty("java.home"),#value2=@System@getProperty("java.runtime.name"),{#value1,#value2}'  
===========================
6.类和方法的命令
sc  // 搜索类和子类支持模糊匹配  参数:  类名 方法名  -d //输出类的详细信息     -E   //开启正则表达式匹配默认开启   -df  //输出类的成员变量信息    sc demo.*/sc -df demo.*
sm   //搜索类方法     参数:  类名 方法名  -d //输出方法的详细信息     -E   //开启正则表达式匹配;默认开启           sm 类名
jad          全类名   [方法] //字节码文件反编译      -E   //开启正则表达式匹配默认开启     jad --source-only demo.MathGame >/root/MathGame.java    编辑java 文件
mc            全路径/类名.java //源代码编译成字节码    -d 指定编译目录   //编译到           mc  /root/MathGame.java   -d  /root
redefine      类名.class//把新生的字节码在内存中运行                                       redefine /root/demo/MathGame.class
======================
7.高级命令
dump   //将已加载的字节码文件保存到 logs/arthas/classdump/  
参数:类名    
-c: 执行表达式的类加载器,默认是系统类加载器  
-E   //开启正则表达式匹配默认开启   
dump  java.lang.string
=========================
classload  //获取类加载器信息  
参数: -l /按类加载器进行统计   
-t  //打印所有类加载器继承树  
-a //列出所有类加载器加载的类谨慎使用  
 -c hashcopde //找类加载器在哪个jar包  
 -c hashcopde
 -r  java.lang.string   //获取某个资源在哪个jar包    
 -c hashcopde -load  java.lang.string  //加载一个类到内存中
========================
monitor   //监视指定类中方法的执行情况  
参数:类名 方法名   
-E//开启正则表达式匹配;默认开启   
-c 120  //统计周期   [c:],意思是统计周期(cycle of output),拥有一个整型的参数值    统计周期,默认值为120秒
monitor  demo.MathGame primeFactors -c 5
==============================
watch    //观察指定方法的调用情况   
参数:类名class-pattern 方法名 method-pattern
express //观察表达式   
condition-express //条件表达式   
-b //方法调用之前观察  
-e //方法异常之后观察
-s  //方法返回之后观察   
-f  //方法结束之后观察   
-E //正则    
-x //指定输出结果属性遍历深度 默认1   
-n 2 //执行次数  
watch   demo.MathGame primeFactors "{params,target,returnObj}"  -x 2  -b -s -n 2
=============================
trace //对方法内部路径进行追踪 并输出方法路径每个节点耗时  
参数:类名 方法名   
condition-express //条件表达式    
-n 2 //执行次数    
-E //正则   
'#cose' //耗时时间筛选    
trace  demo.MathGame primeFactors -n 2
trace  --skipJDKmethod false  demo.MathGame primeFactors -n 2  'cose>.5'


============================
stack  //输出当前方法被调用的路径  
参数:类名 方法名   
condition-express //条件表达式    
-n 2 //执行次数   
-E //正则
============================
tt  //时间隧道记录指定方法调用的入参和返回信息,并能对这些不同时间下调用的信息进行观测
参数: 类名 方法名
 -t  //记录某个方法在一段时间的调用
 -l         //显示所有已记录的列表
 -n  次数      //只记录多少次
 -s  表达式//搜索表达式
 -i  索引号//查看指定索引号的详细调用信息
 -p           //重新调用指定索引号时间碎片
===========================
options  //全局设置
===========================
profiler  命令  [命令参数]//火焰图  profiler start/list/getSamples/status/stop

 

 

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...