深入理解java虚拟机---虚拟机工具jps与jstat(十四)

Posted zhulibin2012

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解java虚拟机---虚拟机工具jps与jstat(十四)相关的知识,希望对你有一定的参考价值。

 

jps-java process status

jps类似于linux的ps命令,用于查看进程.

JPS 名称: jps - Java Virtual Machine Process Status Tool

命令用法: jps [options] [hostid]

              options:命令选项,用来对输出格式进行控制

              hostid:指定特定主机,可以是ip地址和域名, 也可以指定具体协议,端口。

              [protocol:][[//]hostname][:port][/servername]

              

功能描述: jps是用于查看有权访问的hotspot虚拟机的进程. 当未指定hostid时,默认查看本机jvm进程,否者查看指定的hostid机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。 jps可以列出jvm进程lvmid,主类类名,main函数参数, jvm参数,jar名称等信息。

命令选项及功能:

没添加option的时候,默认列出VM标示符号和简单的class或jar名称.如下:

技术分享图片

 

-p  :仅仅显示VM 标示,不显示jar,class, main参数等信息.

技术分享图片

-m:输出主函数传入的参数. 下的hello 就是在执行程序时从命令行输入的参数

技术分享图片

-l: 输出应用程序主类完整package名称或jar完整名称.

技术分享图片

-v: 列出jvm参数, -Xms20m -Xmx50m是启动程序指定的jvm参数

技术分享图片

-V: 输出通过.hotsportrc或-XX:Flags=<filename>指定的jvm参数

-Joption:传递参数到javac 调用的java lancher.

实例:

技术分享图片

技术分享图片

 

 jstat


用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显

一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。

执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。

1.介绍

Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:

  • 类的加载及卸载情况
  • 查看新生代、老生代及metaSpace的容量及使用情况
  • 查看新生代、老生代及metaSpace的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
  • 查看新生代中Eden区及Survior区中容量及分配情况等

    jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查看堆内各个部分的使用量,使用的时候必须加上待统计的Java进程号,可选的不同维度参数以及可选的统计频率参数。

  • 2.语法

    技术分享图片

    下面是jdk1.8支持的选项: 
    技术分享图片

    下面是jdk1.8以下版本支持的选项:

    技术分享图片

    3示例

    jstat  -gc -h5  -t 26316 1s 20
    
    • 1
    • 2

    技术分享图片

    -gc 选项 
    -h5 每隔5行显示一下表头 
    -t 显示从虚拟机启动在当前时间的时间间隔 单位:秒 
    26536 线程id 
    1s 1秒显示一次 
    20 总共显示20次

    4表头讲解

    实名jdk1.7与jdk1.8就差了一个metaspace区域,其它都一样。

    表头描述jdk 版本
    S0C 新生代中Survivor space中S0当前容量的大小(KB)  
    S1C 新生代中Survivor space中S1当前容量的大小(KB)  
    S0U 新生代中Survivor space中S0容量使用的大小(KB)  
    S1U 新生代中Survivor space中S1容量使用的大小(KB)  
    EC Eden space当前容量的大小(KB)  
    EU Eden space容量使用的大小(KB)  
    OC Old space当前容量的大小(KB)  
    OU Old space使用容量的大小(KB)  
    PC Permanent space当前容量的大小(KB) 1.8以下
    PU Permanent space使用容量的大小(KB) 1.8以下
    MC MeteSpace 当前容量的大小(KB) 1.8及以上
    MU MeteSpace 使用容量的大小(KB) 1.8及以上
    CCSC 压缩类空间大小(KB) 1.8及以上
    CCSU 压缩类空间大小(KB) 1.8及以上
    YGC 从应用程序启动到采样时发生 Young GC 的次数  
    YGCT 从应用程序启动到采样时 Young GC 所用的时间(秒)  
    FGC 从应用程序启动到采样时发生 Full GC 的次数  
    FGCT 从应用程序启动到采样时 Full GC 所用的时间(秒)  
    GCT 从jvm启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC  
     







以上是关于深入理解java虚拟机---虚拟机工具jps与jstat(十四)的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具

深入理解java虚拟机基础故障处理工具(jmapjhatjstack等)

深入理解_JVM内存管理JDK监控工具与故障处理工具07

记录java虚拟机性能监控工具(jps与jstat)的使用

深入理解Java虚拟机-常用vm参数分析

深入理解Java虚拟机——虚拟机堆转储快照分析工具(jhat)