引言
在 应用服务出现模型的卡顿或者CPU飙升等问题时,总是要分析一下对应的进程的JVM状态以定位问题和解决问题并做出响应的优化,在这个过程中java自带的一些状态监控 命令工具就非常方便了。
1、jps:JVM进程状况工具
JDK中很多的小工具都参考 了unix的命名方式,jps 就是其中的典型。除了名称和UNIX中的ps相似之外,功能也和ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类( main class,main()函数所在类)名称及这些进程的 本地虚拟机唯一id。
命令格式:
jps [options] [hostid]
options参数解释:
- -l:输出主类全名或jar 路
- -q:只输出LVMD(Local Virtual Machine Identifier , LVMID)
- -m:输出JVM启动时传递给main()的参数
- -v:输出JVM启动时显示指定的JVM参数
jps执行样例:
2、jstat:JVM统计信息监控工具
jstat命令式使用比较频繁的命令,主要用来显示 本地或者远程虚拟机中类装载、内存、垃圾收集、JIT编译等运行数据。 在没有GUI图形界面,只提供了纯文本的控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具。
命令格式:
jstat [option] LVMID [interval ] [count]
其中LVMID是进程id,interval是打印间隔时间(毫秒),count是打印次数,如果省略这两个参数,说明只查询一次。
option参数解释:
选项 | 作用 |
-class | 监视类装载,类卸载,总空间及类装载所消耗的时间 |
-gc | 监视java堆状况,包括Eden区,两个survivor区,老年代,永久代等容量、已经使用空间、GC时间合计信息 |
-gcutil | 监视内容与-gc基本相同,但是输出主要关注已使用空间站总空间的百分比 |
-gccapacity | 监视内容与-gc基本相同,但是输出主要关注java堆各个区域使用到的最大、最小空间 |
-gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
-gcnew | 监视新生代的GC状况 |
-gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大最小空间 |
-gcold | 监视老年代GC状况 |
-gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 |