java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令。
1. jmap
这个命令是用来查看jvm中当前的堆的dump的,包括对象的数量,对象所占内存的大小
使用方式:先使用jps查看进程id
使用 jmap -dump:live,file=b.map 22467
使用 jmap -heap 打印堆的总信息
使用 jmap -histo PID
2. jstat
主要是用来监控 heap size 和 jvm垃圾回收情况的
可以看到S0 S1 heap上的Survivor space使用的百分比, 堆中新生代Eden 区使用的百分比,老年代 Old使用的百分比,Yong gc次数,时间,Full gc次数以及时间,总的gc时间
3. jstack
先使用 top 查看系统中消耗cpu比较多的进程,然后使用 top -p PID -H来查看当前进程中比较消耗cpu的线程,拿到消耗cpu比较高的线程pid,先转换成16进制的,最后使用jstack pid|grep 16进制的线程id
jstack -pid可以用来分析进程情况