Chapter 4 虚拟机性能监控、故障处理工具

虚拟机性能监控、故障处理工具

4.2.1 虚拟机进程状况工具 : jps

jps [ options ] [ hostid ]

选项 含义
-q 只输出 LVMID, 省略主类的名称
-m 输出启动时的 main 参数
-l 输出主类的全名,如果是jar 启动,则输出jar 路径
-v 输出虚拟机进程启动时的JVM参数

4.2.2 虚拟机统计信息监视工具:jstat(JVM Statistic Monitoring Tool)

jstat 可以显示虚拟机进程中的类加载、内存、垃圾收集、即使编译等运行时数据,在没有GUI 图形界面、只提供了纯文本的控制台环境的服务器上,他将是运行期定位虚拟机西能问题的常用工具,主要选项如下:

jstat [ option vmid [ interval [s|ms] [count] ] ]

选项 作用
-class 显示类加载、卸载数量、总空间和装载耗时的统计信息
-compiler 显示即时编译的方法、耗时等信息。
-gc 显示堆各个区域内存使用和垃圾回收的统计信息。
-gccapacity 显示堆各个区域的容量及其对应的空间的统计信息。
-gcutil 显示有关垃圾收集统计信息的摘要。
-gccause 显示关于垃圾收集统计信息的摘要(与-gcutil相同),以及最近和当前垃圾回收的原因。
-gcnew 显示新生代的垃圾回收统计信息。
-gcnewcapacity 显示新生代的大小及其对应的空间的统计信息。
-gcold 显示老年代和元空间的垃圾回收统计信息。
-gcoldcapacity 显示老年代的大小统计信息。
-gcmetacapacity 显示元空间的大小的统计信息。
-printcompilation 显示即时编译方法的统计信息。

4.2.3 Java配置信息工具:jinfo

jinfo (Configuration Info for Java) 的作用是实时查看和调整虚拟机的各项参数。使用 jps 命令的 -v 参数可以查看虚拟机启动时显示指定的参数列表,但是如查找没有被显示指定的参数,除了查找相关的资料,就只有使用 jinfo-flag 选项进行查询了。

jinfo [ option ] pid

4.2.4 Java 内存映射工具:jmap(Memory Map for Java)

jmap 命令用于生成堆转储快照

如果不使用 jmap 命令, 设置 -XX:+HeapDumpOnOutOfMemoryError 参数可以在出现内存溢出后自动生成堆转储快照文件,或者 -XX:+HeapDumpOnCtrlBreak , 或者使用 Kill -3 命令"恐吓"一下虚拟机

jmap [ option ] vmid

选项 描述
-dump 生成 Java 堆转储快照。
-finalizerinfo 显示在 F-Queue 中等待 Finalizer 线程执行 finalize 方法的对象。Linux平台
-heap 显示 Java 堆详细信息,比如:用了哪种回收器、参数配置、分代情况。Linux 平台
-histo 显示堆中对象统计信息,包括类、实例数量、合计容量
-permstat 显示永久代内存状态,jdk1.7,永久代
-F 当虚拟机进程对 -dump 选项没有响应式,可以强制生成快照。Linux平台

4.2.5 虚拟机堆转储快照分析工具:jhat(JVM Heap Analysis Tool)

jhatjmap 搭配使用,来分析 jmap 生成的堆转储快照

jhat 内置了一个HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器中查看。

jhat 的分析功能相对来说比较简陋,可以使用 VisualVM 以及专业用于分析堆转储快照文件的 Eclipse Memory AnalyzerIBM HeapAnalyzer等工具。

Java 堆栈跟踪工具:jstack(Stack Trace for Java)

jstack命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者 javacore文件)。

jstack [ option ] vmid

选项 描述
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-l 除了堆栈外,显示关于锁的附加信息
-m 如果调用的是本地方法的话,可以显示 c/c++的堆栈

4.3 可视化故障处理工具

JDK除了上面的大量的命令行工具,还提供了几个功能集成度更高的可视化工具,这类工具主要包括 JConsole、 JHSDB、VisualVM 和 JMC 四个。

Arthas 阿里开源性能监控工具

相关推荐
剑锋所指,所向披靡!9 分钟前
C++之类模版
java·jvm·c++
钟离墨笺10 分钟前
Go语言--2go基础-->基本数据类型
开发语言·前端·后端·golang
Coder_Boy_21 分钟前
基于SpringAI的在线考试系统-0到1全流程研发:DDD、TDD与CICD协同实践
java·人工智能·spring boot·架构·ddd·tdd
sheji341627 分钟前
【开题答辩全过程】以 面向高校校园的物物交换系统设计与实现为例,包含答辩的问题和答案
java·eclipse
小郭团队39 分钟前
1_7_五段式SVPWM (传统算法反正切+DPWM3)算法理论与 MATLAB 实现详解
开发语言·嵌入式硬件·算法·matlab·dsp开发
卓怡学长1 小时前
m115乐购游戏商城系统
java·前端·数据库·spring boot·spring·游戏
2501_944526421 小时前
Flutter for OpenHarmony 万能游戏库App实战 - 蜘蛛纸牌游戏实现
android·java·python·flutter·游戏
C+-C资深大佬1 小时前
C++风格的命名转换
开发语言·c++
No0d1es1 小时前
2025年粤港澳青少年信息学创新大赛 C++小学组复赛真题
开发语言·c++
点云SLAM1 小时前
C++内存泄漏检测之手动记录法(Manual Memory Tracking)
开发语言·c++·策略模式·内存泄漏检测·c++实战·new / delete