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
 
作用:分析堆转储文件



















