Java GC之常见监控与分析命令总结(上)
上一篇文章简单写了几种常见的垃圾收集器的参数设置,设置参数的时候离不开对对系统进行监控和分析,所以总结一下监控和分析的常见命令。 jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 命令格式: jps \[options\] \[hostid\] hostid为RMI注册表中注册的主机名,其他常用参数如下: -q:只输出LVMID,省略主类的名称 -m:输出虚拟机进程启动的时候传递给主类main()方法的参数 -l:输出主类的全名,如果进程执行的是jar包,输出jar路径 -v:输出虚拟机进程启动时JVM参数 命令执行样例: jps -l jstat:JVM Statistics Monitoring Tool,用于收集Hotspot虚拟机各方面的运行数据 命令格式: jstat \[option vmid [interval[s|ms\] \[count\]]] 对于命令格式中的VMID和LVMID,如过是本地虚拟机进程,VMID和LVMID是一致的,如果是远程虚拟机,那VMID的格式应当是: \[protocol:\] \[//\] lvmid[@hostname[:port]/servername] interval和count代表查询的间隔和次数,如果省略这两个参数,说明只查一次,其他常用参数: -class:监视装载类、卸载类、总空间以及类装载所耗费的时间 -gc:监视java堆状况,包括eden区、两个survivor区、老年代、永久代等的容量、已用空间、GC时间合计信息 -gccapacity:监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到最大、最小空间 -gcutil:监视内容与-gc基本相同,但输出主要关注已使用控件占总空间的百分比 -gccause:与-gcutil功能一样,但是会额外输出导致上一次gc产生的原因 -gcnew:监视新生代GC情况 -gcnewcapacity:监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 -gcold:监视老年代GC情况 -gcoldcapacity:监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 -gcpermcapacity:输出永久代使用到的最大、最小空间 -compiler:输出JIT编译过的方法、耗时等信息 -printcompilation:输出已经被JIT编译过的方法 命令执行样例: jstat -gcutil 2764 1000 jinfo:Configuration Info for Java,显示虚拟机的配置信息 使用jps命令的-v参数可以查看虚拟机启动时显示指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,除了去找资料以外,就得使用jinfo的-flag选项,命令格式: jinfo [option] pid 执行样例:查询CMSInitiatingOccupancyFraction参数值 jinfo -flag CMSInitiatingOccupancyFraction 2764 jmap:Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件) 命令格式: ...