JVM调优工具
Jmap
查看类信息
此命令可以查看内存信息,实例个数以及占用内存大小。
- num:序号
- instances:实例数量
- bytes:占用空间大小
- class name:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]
查看堆信息
jmap -dump:format=b,file=nacos.hprof 16280
dump的文件可以用jvisualvm查看
Jstack
jstack是Java工具包的命令行工具,用于生成Java进程的线程快照。对于诊断多线程问题(性能和死锁等问题)十分有用。
用法:
jstack <PID>
#124 线程编号或ID
prio=5 优先级=5
tid=0x281b9c00 线程id
nid=0x21e4 线程对应的本地线程标识nid
java.lang.Thread.State: TIMED_WAITING 线程状态
Jinfo
查看Java运行环境参数
jinfo -flag <PID>
查看系统参数
jinfo -sysprops <pid>
Jstat
用于监控和手机JVM各种性能统计信息,包括垃圾回收,类加载,线程,编译方面的性能数据。
查看垃圾回收统计信息
jstat -gc <PID>
- S0C:第一个幸存区的大小,单位KB
- S1C:第二个幸存区的大小
- S0U:第一个幸存区的使用大小
- S1U:第二个幸存区的使用大小
- EC:伊甸园区的大小
- EU:伊甸园区的使用大小
- OC:老年代大小
- OU:老年代使用大小
- MC:方法区大小(元空间)
- MU:方法区使用大小
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- YGC:年轻代垃圾回收次数
- YGCT:年轻代垃圾回收消耗时间,单位s
- FGC:老年代垃圾回收次数
- FGCT:老年代垃圾回收消耗时间,单位s
- GCT:垃圾回收消耗总时间,单位s
查看类加载信息
jstat -class <PID>
- Loaded(已加载的类数量):这是已经加载到 Java 应用程序中的类的数量。
- Bytes(已加载类所占用的字节数):这是已加载类所占用的总字节数。
- Unloaded(已卸载的类数量):这是已经被卸载(即被卸载类加载器所卸载)的类的数量。
- Bytes Unloaded(已卸载类所占用的字节数):这是已卸载类所占用的总字节数。