JVM作为Java进阶的知识,是需要Java程序员不断深度和理解的。
本篇博客介绍JVM调优的工具阿里云的Arthas的使用,安装和使用,命令的使用案例;死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案例。
其他相关的JVM博客文章如下:
系列文章合集如下:
【合集】Java进阶——Java深入学习的笔记汇总 & 再论面向对象、数据结构和算法、JVM底层、多线程、类加载 …
1.JVM调优的工具阿里云的Arthas的使用,安装和使用;
2.命令的使用案例,dashboard,heapdump,jvm,sm,jad;
3.死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案例。
阿尔萨斯官网:https://arthas.aliyun.com/doc/
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
当你遇到以下类似问题而束手无策时,Arthas
可以帮助你解决:
curl -O https://arthas.aliyun.com/arthas-boot.jar #下载arthas
java -jar arthas-boot.jar #启动阿尔萨斯
java -jar -Xms200m -Xmx200M -XX:+PrintGC -XX:-UseParallelGC spring-gc-demo-1.0-SNAPSHOT.jar
https://arthas.aliyun.com/doc/commands.html
1.dashboard
通过这个命令,可以查看哪根线程是最吃CPU的!替代:top -p 进程 -H
得到进程仪表盘,当前系统的实时数据面板,按 ctrl+c 退出
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 -h 查看帮助
检测死锁
thread -b
想在Linux上直接查看某一个类的源代码,可以使用它来完成代码的反编译
在线反编译,比如:A 团队 调用 B团队的接口,当获得结果不对,那么则可以使用这种命令,在线查看B团队中的类的代码
类似于:javap
jad com.tianju.gc.controller.DeadLockController
retransform
在不停止程序的情况,重新加载某一个类的类信息
retransform /root/CardInfo.class
retransform /usr/local/software/jar/java-gc-demo/CardInfo.class
方法内部调用路径,并输出方法路径上的每个节点上耗时
主要用于:性能调优
分布式系统使用:zipkin ,skywarking
trace命令查看调用链
方法执行监控
服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 命令不会引起原有业务逻辑的改变
https://github.com/alibaba/arthas/issues?q=label%3Auser-case
https://github.com/alibaba/arthas/issues/1494
1.JVM调优的工具阿里云的Arthas的使用,安装和使用;
2.命令的使用案例,dashboard,heapdump,jvm,sm,jad;
3.死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案例。