JVM之常用监控工具
jps
jinfo
获取配置信息
基本语法
jinfo [options] <pid>
常用选项
-sysprops
:显示JVM进程的系统属性。-flags
:显示用于启动JVM的命令行标志和VM选项。-flag <name>
:显示指定JVM标志的当前值。-flag [+|-]<name>
:启用或禁用指定的JVM标志。-flag <name>=<value>
:设置指定JVM标志的值。-h
:打印帮助消息,列出可用选项的列表。
常用示例
- 获取正在运行的JVM的系统属性:
jinfo -sysprops 608
....
- 获取用于启动JVM的命令行标志和VM选项:
[root@VM-16-3-centos ~]# jinfo -flags 608
Attaching to process ID 608, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.231-b11
Non-default VM flags: -XX:CICompilerCount=2 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=null -XX:InitialHeapSize=134217728 -XX:MaxHeapSize=134217728 -XX:MaxNewSize=67108864 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=67108864 -XX:OldSize=67108864 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
Command line: -Xms128m -Xmx128m -Xmn64m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/javaapp/dbddump.bin
jstat
统计信息
基本语法
jstat [optionList] <vmid> [interval] [count]
常用选项
-gc
:显示与垃圾回收相关的统计信息。-class
:显示与类加载相关的统计信息。-compiler
:显示与JIT编译器相关的统计信息。-gcutil
:显示与垃圾回收相关的统计信息(以百分比形式)。-gcnew
:显示新生代垃圾回收相关的统计信息。-gcold
:显示老年代垃圾回收相关的统计信息。-gcpermcapacity
:显示永久代容量相关的统计信息。
请注意,jstat
命令提供了更多选项和功能,您可以使用jstat -options
命令查看完整的选项列表和描述。
常用示例
jstat -gc 608 1000 3
jmap
堆内存详细信息
基本语法
jmap [optionList] <pid>
常用选项
-heap
:显示堆内存使用情况,包括堆大小、已使用空间、各代区域大小等。-histo
:显示堆内存中各个类的实例数量和占用空间。-dump:<dumpOptions>
:导出堆转储文件(heap dump),可以进行后续的内存分析。-finalizerinfo
:显示等待执行 finalizer 方法的对象信息。-clstats
:显示类加载器的统计信息。-F
:在无法通过正常方式导出堆转储文件时,强制进行转储。
常用示例
显示堆的使用情况
[root@VM-16-3-centos ~]# jmap -heap 608
Attaching to process ID 608, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.231-b11
using thread-local object allocation.
Parallel GC with 2 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 134217728 (128.0MB)
NewSize = 67108864 (64.0MB)
MaxNewSize = 67108864 (64.0MB)
OldSize = 67108864 (64.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 61865984 (59.0MB)
used = 27628008 (26.348121643066406MB)
free = 34237976 (32.651878356933594MB)
44.65783329333289% used
From Space:
capacity = 2621440 (2.5MB)
used = 1397360 (1.3326263427734375MB)
free = 1224080 (1.1673736572265625MB)
53.3050537109375% used
To Space:
capacity = 2621440 (2.5MB)
used = 0 (0.0MB)
free = 2621440 (2.5MB)
0.0% used
PS Old Generation
capacity = 67108864 (64.0MB)
used = 24676544 (23.53338623046875MB)
free = 42432320 (40.46661376953125MB)
36.77091598510742% used
25314 interned Strings occupying 2714424 bytes.
显示堆直方图
jmap -histo:live 608
导出堆转储文件
[root@VM-16-3-centos ~]# jmap -dump:live,format=b,file=/root/dbdheap.bin 608
Dumping heap to /root/dbdheap.bin ...
Heap dump file created
[root@VM-16-3-centos ~]#
jstack
线程堆栈信息
基本语法
jstack [optionList] <pid>
常用选项
-l
:输出长格式的线程堆栈信息,包括锁的附加信息。-F
:在线程不响应时,强制输出线程堆栈信息。-m
:输出线程的锁信息。-h
:显示帮助信息。
常用示例
jvisualvm
可视化vm
作用:分析堆转储文件