arthas诊断工具

news2025/2/24 12:40:24

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

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

​生成图片并添加文字Image.new()与ImageDraw.drawer.text()方法​

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 生成图片并添加文字 Image.new()与ImageDraw.drawer.text()方法 [太阳]选择题 以下python代码表述错误的一项是? from PIL import Image,ImageDraw,ImageFont imgImage.new(modeRGB,…

计算机网络第六章知识点回顾(自顶向下)

第六章知识点回顾1.链路层和局域网1.1网络层、链路层和物理层1.2链路层服务1.3链路层在哪儿实现?1.3.1网络适配器之间的通信1.4检错和纠错1.5如何检测与纠正错误?1.5.1编码集的检错与纠错能力1.5.2差错检测的实施1.5.3奇偶校验1.5.4循环冗余校验&#xf…

图像分割 - 区域生长

目录 1. 介绍 2. 代码详解 3. 代码 1. 介绍 分割的目的是将图像分为多个区域 常用的分割方法基于两个属性:不同区域间的灰度不连续性质(Canny边缘检测等等)、相同区域灰度的相似特征(阈值处理、区域生长等等) 区…

牛客网语法篇练习基础语法(一)

1.输出"Hello Nowcoder!"。开始你的编程之旅吧。 print(Hello Nowcoder!) 2.KiKi学会了print在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机。 print( *5 ** *5) print( *5 ** *5) print(**12) print(**12) print( *4 * * *4) prin…

Arduino操作MPU6050模块

MPU6050是集成三轴陀螺仪,三轴加速度计,温度传感器于一体的模块。本文档基于Adafruit_MPU6050实现MPU6050模块基本操作。 Adafruit_MPU6050库: https://github.com/adafruit/Adafruit_MPU6050 Adafruit_MPU6050依赖以下库,需要在…

Java中的char、Character和CharSequence的区别

char 与 Character char是一种基本的数据类型,Character是char类型的包装类,即通过Character创建出来的是一种对象。 Character是char的包装类,就像Integer和int,以及Long和long一样。 包装类和基本类型可以自动转换&#xff…

安泰测试-同惠TH2827精密LCR数字电桥产品性能特点

同惠(Tonghui)TH2827A/TH2827B/TH2827C型 LCR数字电桥 产品简介: TH2827A/TH2827B/TH2827C是具有多种功能和更高测试频率的新型LCR数字电桥,体积小,紧凑便携,便于上架使用。本系列仪器基本精度为0.05%,测试频率最高1M…

GitLab仓库管理系统安装详细步骤

前言 本案例安装 gitlab、jenkins、并部署springboot应用程序,所以准备了3台服务器。 服务器1:安装gitlab服务器2:安装jdk、maven、git、jenkins 因为jenkins需要jdk、maven、git服务器3:安装jdk。 jenkins自动部署的springboot…

多目标优化生态调度结果的预测方法研究——基于新蝙蝠算法(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

【CNN】ZFNet——让卷积神经网络不再是一个黑盒模型。

前言 ZFNet在2013年 ILSVRC 图像分类竞赛获得冠军,错误率11.19% ,比2012年的AlexNet降低了5%,ZFNet是由 Matthew D.Zeiler 和 Rob Fergus 在 AlexNet 基础上提出的大型卷积网络。ZFNet解释了为什么卷积神经网络可以在图像分类上表现的如此出…

[MySQL]事务ACID详解

专栏简介 :MySql数据库从入门到进阶. 题目来源:leetcode,牛客,剑指offer. 创作目标:记录学习MySql学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1. 事务的概念 2. 事务的特性 3.事务控制语法…

【经验篇】Java使用ZMQ断线重连问题

简介 ZeroMQ是一个高性能的异步消息传递库,旨在用于分布式或者并发应用程序。它提供了一个消息队列,但与面向消息的中间件不同,ZeroMQ 系统可以在没有专用消息代理的情况下运行。 ZeroMQ 支持各种传输(TCP、进程内、进程间、多播…

初步认识端口服务查询--netstat

转载连接:netstat详解 目录1、语法与参数概括2、输出释义2.1 以netstat -atnlp为例,解释输出结果中各列的含义2.2、以netstat -rn为例,解释输出结果中各列的含义3、实用命令4、项目中通过netstat查询某端口是否被占用netstat命令是一个监控TC…

Spring5源码3-BeanDefinition

1. BeanDefinition BeanDefinition在spring中贯穿始终,spring要根据BeanDefinition对象来实例化bean,只有把解析的标签,扫描的注解类封装成BeanDefinition对象,spring才能实例化bean beanDefinition主要实现类: ChildBeanDefini…

ADB安装及使用详解

一、ADB简介 1、什么是adb ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。 ADB 也是 Android SDK 中的一个工具,可以直接操作管理 Androi…

K8s高可用集群搭建

K8s高可用集群搭建1 方案简介2 集群搭建2.1 安装要求2.2 准备环境2.3 master节点部署keepalived2.4 master节点部署haproxy2.5 所有节点安装docker/kubeadm/kubelet2.6 部署k8smaster012.7 安装集群网络2.8 k8smaster02加入节点2.9 k8snode01加入集群3 测试集群1 方案简介 用到…

Session-based Recommendation with Graph Neural Networks论文阅读笔记

1. Abstract (1)基于会话的推荐问题旨在基于匿名会话来预测用户的行为。 The problem of session-based recommendation aims to predict user actions based on anonymous sessions. (2) 以前的方法存在的不足:不足以…

day3-day4【代码随想录】长度最小的子数组

文章目录前言一、长度最小的子数组1、暴力求解:2、滑动窗口求解:二、最小覆盖子串(乐扣76)难难难难难三、水果成篮(乐扣904)四、最长重复子数组(乐扣718)前言 实现滑动窗口&#xf…

Android抓包工具——Fiddler

前言 🔥在平时和其他大佬交流时,总会出现这么些话,“抓个包看看就知道哪出问题了”,“抓流量啊,payload都在里面”,“这数据流怎么这么奇怪”。 👉这里出现的名词,其实都是差不多的…

矩阵分析:特征值分解

矩阵分析:特征值分解前置知识空间变换伸缩旋转对称矩阵对称矩阵对角化正交矩阵向量的基基变换不同基下的向量变换逆矩阵不同基下的空间变换内积的几何意义特征值、特征向量特征值分解代码前置知识 空间变换 伸缩 一个矩阵其实就是一个线性变换,因为一个…