【目录】 【上一篇:JVM 监控及诊断工具 - 命令行】 【下一篇:JVM 运行时参数】
十一、JVM 监控工具
1、JConsole
- 用于对 JVM 中内存、线程和类等信息的监控;
- 命令 jconsole 启动即可,JVM 自带
2、Visual VM
- Visual VM可用于显示虚拟机进程及进程的配置和环境信息(jps,jinfo),监视应用程序的CPU、GC、堆、方法区及线程的信息(jstat、jstack)等,甚至代替JConsole;
- jdk 自带,在 jdk 包的 lib 文件目录下(JDK 11 及之后就没自带了)
主要功能:
- 1.生成/读取堆内存/线程快照
- 2.查看JVM参数和系统属性
- 3.查看运行中的虚拟机进程
- 4.程序资源的实时监控
- 5.JMX代理连接、远程环境监控、CPU分析和内存分析
3、eclipse MAT
OQL 语句:
MAT 支持一种类似于 SQL 的查询语句 OQL,可以在堆中进行对象的查找和筛选
自行了解吧,跟 sql 差不多
4、JProfiler
主要功能:
- 1-方法调用:对方法调用的分析可以帮助您了解应用程序正在做什么,并找到提高其性能的方法
- 2-内存分配:通过分析堆上对象、引用链和垃圾收集能帮您修复内存泄露问题,优化内存使用
- 3-线程和锁:JProfiler提供多种针对线程和锁的分析视图助您发现多线程问题
- 4-高级子系统:许多性能问题都发生在更高的语义级别上。例如,对于JDBC调用,您可能希望找出执行最慢的SQL语句。JProfiler支持对这些子系统进行集成分析
5、Arthas(神器)
Arthas是Alibaba开源的Java诊断工具,在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
官方地址:https://arthas.aliyun.com/doc/quick-start.html
【目录】 【上一篇:JVM 监控及诊断工具 - 命令行】 【下一篇:JVM 运行时参数】