jamp
主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。
举例
[root@iZwz9hv1phm24s3jicy8x1Z crm]# ps -ef|grep java
root 2529802 1 0 Jul11 ? 00:37:01 java -jar Project_CRM-1.0.4-SNAPSHOT.jar
root 2700426 2691206 0 23:48 pts/0 00:00:00 grep --color=auto java
#这里查看java堆的使用情况
[root@iZwz9hv1phm24s3jicy8x1Z crm]# jmap -heap 2529802
Attaching to process ID 2529802, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13
using thread-local object allocation.
Mark Sweep Compact GC
#堆内存的初始化配置
Heap Configuration:
#JVM堆的最小空闲比率
MinHeapFreeRatio = 40
#JVM堆的最大空闲比率
MaxHeapFreeRatio = 70
#设置JVM堆的最大大小
MaxHeapSize = 517996544 (494.0MB)
#设置新生代的默认大小
NewSize = 11141120 (10.625MB)
#设置新生代的最大大小
MaxNewSize = 172621824 (164.625MB)
#设置老年代的大小
OldSize = 22413312 (21.375MB)
#设置新生代和老年代的大小比率
NewRatio = 2
#设置新生代中eden区和suvivor区的大小比例
SurvivorRatio = 8
#设置元空间触发FGC的初始阈值
MetaspaceSize = 21807104 (20.796875MB)
#class metadata存储在native memory中,其大小默认是不受限的,可以通过-XX:MaxMetaspaceSize来限制
CompressedClassSpaceSize = 1073741824 (1024.0MB)
#如果开启了指针压缩,则CompressedClassSpace分配在MaxMetaspaceSize里头
MaxMetaspaceSize = 17592186044415 MB
#MaxMetaspaceSize用于设置metaspace区域的最大值
G1HeapRegionSize = 0 (0.0MB)
#堆的使用情况
Heap Usage:
#新生代堆的使用情况
New Generation (Eden + 1 Survivor Space):
capacity = 28835840 (27.5MB)
used = 10300232 (9.823066711425781MB)
free = 18535608 (17.67693328857422MB)
35.72024258700284% used
Eden Space:
capacity = 25690112 (24.5MB)
used = 7154504 (6.823066711425781MB)
free = 18535608 (17.67693328857422MB)
27.849251883370535% used
From Space:
capacity = 3145728 (3.0MB)
used = 3145728 (3.0MB)
free = 0 (0.0MB)
100.0% used
To Space:
capacity = 3145728 (3.0MB)
used = 0 (0.0MB)
free = 3145728 (3.0MB)
0.0% used
#年老代堆的使用情况
tenured generation:
capacity = 63827968 (60.87109375MB)
used = 45382288 (43.27992248535156MB)
free = 18445680 (17.591171264648438MB)
71.10094433838157% used
24824 interned Strings occupying 2558640 bytes.
jps
用来查看所有的java进程的pid号
[root@iZwz9hv1phm24s3jicy8x1Z ~]# jps
2777472 Jps
2529802 jar
[root@iZwz9hv1phm24s3jicy8x1Z ~]# jps
2777518 Jps
2529802 jar
#-l显示完整程序的名称,或者命令的完整包名
[root@iZwz9hv1phm24s3jicy8x1Z ~]# jps -l
2778459 sun.tools.jps.Jps
2529802 Project_CRM-1.0.4-SNAPSHOT.jar
jstat(参考)
jstat(Java Virtual Machine Statistics Monitoring Tool)是JDK提供的一个可以监控Java虚拟机各种运行状态信息的命令行工具。它可以显示Java虚拟机中的类加载、内存、垃圾收集、即时编译等运行状态的信息。
使用举例
#查看类加载的统计信息,显示类加载、卸载数量、总空间和装载耗时的统计信息。
[root@iZwz9hv1phm24s3jicy8x1Z ~]# jstat -class 2529802
Loaded Bytes Unloaded Bytes Time
12230 22614.5 119 178.4 221.46
#显示即时编译的方法、耗时等信息。
[root@iZwz9hv1phm24s3jicy8x1Z ~]# jstat -compiler 2529802
Compiled Failed Invalid Time FailedType FailedMethod
9228 1 0 46.74 1 org/springframework/boot/loader/jar/Handler openConnection
#显示堆各个区域内存使用和垃圾回收的统计信息。
[root@iZwz9hv1phm24s3jicy8x1Z ~]# jstat -gc 2529802
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
3072.0 3072.0 0.0 3072.0 25088.0 1655.5 62332.0 57731.3 69848.0 66279.7 8920.0 8309.3 295 2.801 26 3.611 6.412