JVM常用工具
1、JPS 查看Java进程
简化版的 ps -ef | grep java
一切操作的基础,需要先获取进程号。
-l 参数,显示应用程序主类完整全路径
-v参数,列出应用程序启动时的JVM启动参数
2、JStat
查看JVM运气时期的一些状态信息。如查看类型的加载,垃圾回收等。主要用来看一段时间的GC及内存使用情况。
使用方式: jstat -gc 进程ID 时间 次数
每1s时间查看一次JVM的垃圾收集情况,一共查看10次对应的命令为:
jstat -gc xxx 1000 10
各项信息说明:
- S0C : 第一个幸存区的空间
- S1C : 第二个幸存区空间
- S0U : 第一个幸存区已经使用的空间
- S1U : 第二个幸存区已经使用的空间
- EC : Eden区的空间
- EU : Eden区已经使用的空间
- OC : old区的空间
- OU : old区已经使用的空间
- MC : 方法区的空间
- MU : 方法区已经使用的空间
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- YGC:young gc的次数
- YGCT: yong gc 花费的时间
- FGC : full gc 的次数
- FGCT:full gc花费的时间
- GCT : 垃圾回收消耗总时间
3. Jinfo 查看和修改JVM的参数
使用Jinfo可以在应用程序运行期间动态改变参数,如 开启打印GC日志:
jinfo -flag +PrintGC 进程Id
因为打印GC日志是需要消耗一定资源,为了不影响性能,一般都是关闭的,但是当出现问题的时候,就可以通过该命令打印GC日志信息。另外查看完毕后一定记得关掉。
4、Jmap
生成堆快照信息,查看堆的内存使用信息。
jmap -heap < pid >
jmap -histo < pid >
显示每个class的实例数,及内存占用
jmap -histo:live pid 只显示存活的。
-dump 生成的堆转储快照
5、Jhat
分析dump文件 jhat dump文件
6、jstack
分析线程状态信息。