java虚拟机系列(四)- java虚拟机性能监控与调优
java工具包及其命令
一、jps
显示系统中正在运行的虚拟机进程
命令格式:
jps [options] [hostid]
常用参数
- -q:只输出进程id
- -l:输出全类名,如果是jar包输出jar包地址
- -m:输出main方法传入的参数
- -v:输出虚拟机进程启动参数
二、jstat
监控jvm虚拟机内存使用情况的工具。
可以用来显示系统中类装载、垃圾回收、运行期编译状况等运行数据。
命令格式:
- jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
- vmid:表示虚拟机唯一标识符,如果是本地虚拟机进程,与LVMID一致,通常为本地虚拟机进程号。
- interval:表示查询间隔时间。
- count:表示查询次数。
如果省略interval和count参数,表示查询一次。
常用参数:
- gc:java堆信息和垃圾回收状况.
- gcutil:关注已使用空间占总空间比例.
- S0:表示Survivor0
- S1:表示Survivor1
- E:表示新生代Eden
- O:表示老年代Old
- M:表示元空间(P表示永久代)
以上各参数的值表示已使用内存空间占比。 - YGC:表示young gc次数
- YGCT:表示young gc总耗时
- FGC:表示Full gc次数
- FGCT:表示full gc总耗时
- GCT:表示所有gc总耗时时间。
- S0C:年轻代中第一个survivor(幸存区)的容量 (KB)
- S1C:年轻代中第二个survivor(幸存区)的容量 (KB)
- S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (KB)
- S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (KB)
- EC:年轻代中Eden(伊甸园)的容量 (KB)
- EU:年轻代中Eden(伊甸园)目前已使用空间 (KB)
- OC:Old代的容量 (KB)
- OU:Old代目前已使用空间 (KB)
- PC(MC):Perm(持久代)(元空间)的容量 (KB)
- PU(MU):Perm(持久代)(元空间)目前已使用空间 (KB)
- YGC:从应用程序启动到采样时年轻代中gc次数
- YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
- FGC:从应用程序启动到采样时old代(全gc)gc次数
- FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
- GCT:从应用程序启动到采样时gc用的总时间(s)
三、jstack
显示虚拟机的线程栈信息,该命令通常用于定位线程停顿原因。
命令格式:
jstack [ option ] pid
常用参数
- -l:显示关于锁的附加信息
- -m:显示native方法堆栈
- -F:强制输出
四、jinfo
查看或者增删改jvm运行时参数信息
命令格式:
jinfo [ option ] pid
常用参数:
- -flag [+|-] name:增加或者删除jvm参数。(一般不用)
- -flag name=value: 修改jvm参数(一般不用)
- -flags:查看jvm参数
- -sysprops:打印系统参数
五、jmap
用于生成虚拟机的内存快照信息,或者查看java堆和持久代的详细信息
命令格式:
jmap [ option ] pid
常用参数:
- -dump:[live,]format=b,file= 导出存储快照到系统目录,其中live表明只dump出存活的对象,format=b表明二进制输出,filename为导出的文件名。dump出的文件可以用jvsualvm工具分析
- -heap:打印堆内存信息,和垃圾回收算法
参考资料:《深入理解JAVA虚拟机》