大型门户网站建设哪家好,泰安网站推广,9uu最新域址永久,如何做网站轮播图和菜单全屏前言
JVM作为Java进阶的知识#xff0c;是需要Java程序员不断深度和理解的。
本篇博客介绍JVM调优的工具阿里云的Arthas的使用#xff0c;安装和使用#xff0c;命令的使用案例#xff1b;死锁查询的案例#xff1b;重新加载一个类信息的案例#xff1b;调用慢的分析案…
前言
JVM作为Java进阶的知识是需要Java程序员不断深度和理解的。
本篇博客介绍JVM调优的工具阿里云的Arthas的使用安装和使用命令的使用案例死锁查询的案例重新加载一个类信息的案例调用慢的分析案例。
其他相关的JVM博客文章如下
Java进阶1——JVM的内存分配 反射Class类的类对象 创建对象的几种方式 类加载何时进入内存JVM 注解 反射注解的案例Java进阶4——结合类加载JVM的过程理解创建对象的几种方式new反射Class克隆clone拷贝序列化反序列化Java进阶垃圾回收GC——理论篇JVM内存模型 垃圾回收定位清除算法 JVM中的垃圾回收器Java进阶JVM调优——JVM调优参数 JDK自带工具使用 内存溢出和死锁问题案例 GC垃圾回收
系列文章合集如下 【合集】Java进阶——Java深入学习的笔记汇总 再论面向对象、数据结构和算法、JVM底层、多线程、类加载 … 目录 前言引出Arthas的使用官网和初识安装和使用1.启动自己的jar包2.然后启动阿尔萨斯3.命令参考 命令的使用案例死锁的场景thread 线程信息jad反编译 retransform 重新加载某一个类的类信息调用慢的问题分析trace调用路径monitor 方法执行监控 其他使用案例总结 引出 1.JVM调优的工具阿里云的Arthas的使用安装和使用 2.命令的使用案例dashboardheapdumpjvmsmjad 3.死锁查询的案例重新加载一个类信息的案例调用慢的分析案例。
Arthas的使用
官网和初识
阿尔萨斯官网https://arthas.aliyun.com/doc/ Arthas 是一款线上监控诊断产品通过全局视角实时查看应用 load、内存、gc、线程的状态信息并能在不修改应用代码的情况下对业务问题进行诊断包括查看方法调用的出入参、异常监测方法执行耗时类加载信息等大大提升线上问题排查效率。
当你遇到以下类似问题而束手无策时Arthas可以帮助你解决
这个类从哪个 jar 包加载的为什么会报各种类相关的 Exception我改的代码为什么没有执行到难道是我没 commit分支搞错了遇到问题无法在线上 debug难道只能通过加日志再重新发布吗线上遇到某个用户的数据处理有问题但线上同样无法 debug线下无法重现是否有一个全局视角来查看系统的运行状况有什么办法可以监控到 JVM 的实时运行状态怎么快速定位应用的热点生成火焰图怎样直接从 JVM 内查找某个类的实例 安装和使用
curl -O https://arthas.aliyun.com/arthas-boot.jar #下载arthasjava -jar arthas-boot.jar #启动阿尔萨斯1.启动自己的jar包
java -jar -Xms200m -Xmx200M -XX:PrintGC -XX:-UseParallelGC spring-gc-demo-1.0-SNAPSHOT.jar2.然后启动阿尔萨斯 3.命令参考
https://arthas.aliyun.com/doc/commands.html 命令的使用案例
1.dashboard
通过这个命令可以查看哪根线程是最吃CPU的替代top -p 进程 -H 得到进程仪表盘当前系统的实时数据面板按 ctrlc 退出 2.heapdump 替代jmap命令dump java heap, 类似 jmap 命令的 heap dump 功能 3.jvm 查看当前 JVM 信息替代jinfo命令 4.sm 查看已加载类的方法信息 5.jad jad 反编译看一下 6.help arthas 的帮助命令 7.memory 查看 JVM 内存信息 8.watch 让你能方便的观察到指定函数的调用情况。能观察到的范围为返回值、抛出异常、入参 死锁的场景
thread 线程信息 查看当前线程信息查看线程的堆栈 thread -h 查看帮助检测死锁
thread -b jad反编译 想在Linux上直接查看某一个类的源代码可以使用它来完成代码的反编译 在线反编译比如A 团队 调用 B团队的接口当获得结果不对那么则可以使用这种命令在线查看B团队中的类的代码 类似于javap jad com.tianju.gc.controller.DeadLockControllerretransform 重新加载某一个类的类信息
retransform 在不停止程序的情况重新加载某一个类的类信息 retransform /root/CardInfo.classretransform /usr/local/software/jar/java-gc-demo/CardInfo.class 调用慢的问题分析
trace调用路径 方法内部调用路径并输出方法路径上的每个节点上耗时 主要用于性能调优 分布式系统使用zipkin ,skywarking trace命令查看调用链 monitor 方法执行监控 方法执行监控 服务端是以任务的形式在后台跑任务植入的代码随着任务的中止而不会被执行所以任务关闭后不会对原有性能产生太大影响而且原则上任何 Arthas 命令不会引起原有业务逻辑的改变 其他使用案例
https://github.com/alibaba/arthas/issues?qlabel%3Auser-case
https://github.com/alibaba/arthas/issues/1494 总结
1.JVM调优的工具阿里云的Arthas的使用安装和使用 2.命令的使用案例dashboardheapdumpjvmsmjad 3.死锁查询的案例重新加载一个类信息的案例调用慢的分析案例。