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










![[MySQL]事务ACID详解](https://img-blog.csdnimg.cn/fc9367d3361843ada90717e1b3016bf1.png)








