Jusene's Blog

JVM 性能监控工具

字数统计: 1.5k阅读时长: 6 min
2018/03/20 Share

SUN JDK 工具

  • jps:jvm process status tool,显示指定系统内所有的HotSpot虚拟机进程

  • jstat: jvm statistics monitoring tool,用于收集HotSpot虚拟机各方面的运行数据

  • jinfo: configuration info for java,显示虚拟机配置信息

  • jmap: memory map for java,生成虚拟机的内存转换快照(heapdump文件)

  • jhat: jvm heap dump browser,用于分析heapdump文件,会形成一个http/html服务器

  • jstack: stack trace for java,显示虚拟机的线程快照

    jps 虚拟进程状态工具

  • -q: 只输出LVMID,省略主类的名称

  • -m: 输出虚拟机进程启动时传递给主类main()的参数

  • -l: 输出主类的全名,如果进程执行的jar包,输出jar路径

  • -v: 输出虚拟机进程启动时jvm参数

jstat 虚拟机统计信息监视工具

jstat是用于监视虚拟机各种运行状态信息的命令行工具:
jstat [option vmid [interval][s|ms][count]]

option:

  • -class: 监视类装载、卸载数量、总空间以及类装载所消耗的时间
    • Loaded: 类载入的数目
    • Bytes: 装载的数量大小
    • Unloaded: 未被载入的类数目
    • Bytes: 未被载入的数量大小
    • Time: 执行类加载和卸载操作的时间
  • -gc: 监视java堆状况,包括Eden区、两个survivor区、老年代、永久代等容量、已用空间、GC时间合计等信息
    • S0C: heap上的survivor space 0区大小
    • S1C: heap上的survivor space 1区大小
    • S0U: heap上的survivor space 0区使用大小
    • S1U: heap上的survivor space 1区使用大小
    • EC: heap上eden space区的大小
    • EU: heap上eden space区使用大小
    • OC: heap上old space区的大小
    • OU: heap上old space区使用大小
    • PC: heap上perm space区的大小
    • PU: heap上perm space区的使用大小
    • YGC: 年轻代的垃圾回收次数
    • YGCT: 年轻代的回收的时间
    • FGC: FULL GC的次数
    • FGCT: FULL GC回收的时间
    • GCT: 垃圾收集的总时间
  • -gccapacity: 监视内容内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大、最小空间
    • NGCMN: 新生代最小大小
    • NGCMX: 新生代最大大小
    • NGC: 当前新生代大小
    • S0C: heap上的survivor space 0区大小
    • S1C: heap上的survivor space 1区大小
    • EC: heap上eden space的大小
    • OGCMN: 老年代最小大小
    • OGCMX: 老年代最大大小
    • OGC: 当前老年代大小
    • OC: 当前老年代大小
    • PGCMN: 持久代最小大小
    • PGCMX: 持久代最大大小
    • PGC: 当前持久代大小
    • PC: 当前持久带大小
    • YGC: 年轻代gc回收次数
    • FGC: FULL GC回收次数
  • -gcuitl: 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
    • S0: survivor space 0的使用占总空间的百分比
    • S1: survivor space 1的使用占总空间的百分比
    • E: eden space的使用占总空间的百分比
    • O: old space的使用占总空间的百分比
    • P: 持久带的使用占总空间的百分比
    • YGC: 年轻代gc回收的次数
    • YGCT: 年轻代回收的时间
    • FGC: full gc回收的次数
    • FGCT: full gc回收的时间
    • GCT: gc回收的时间
  • -gccause: 额外输出上一次gc产生的原因
    • LGCC: 上一次gc回收原因
    • GCC: 本次gc回收原因
  • -gcnew: 监视新生代gc状况
    • TT: 任期阈值
    • MTT: 最大任期阀值
    • DSS: 预期的幸存者大小
    • EC: 当前eden space大小
    • EU: eden space大小
    • YGC: 年轻代回收的次数
    • YGCT: 年轻代回收的时间
  • -gcnewcapacity: 监视内容与-gennew基本相同,输出主要关注使用到的最大、最小空间
    • NGCMN: 新生代最小大小
    • NGCMX: 新生代最大大小
    • NGC: 当前新生代大小
    • S0CMX: 存活空间0最大大小
    • S0C: 当前存活空间0的大小
    • S1CMX: 存活空间1最大大小
    • S1C: 当前存活空间1大小
    • ECMX: eden space最大大小
    • EC: 当前eden space大小
    • YGC: 年轻代gc回收次数
    • FGC: FULL GC回收的次数
  • -gcold: 监视老年代gc状况
    • PC: 当前持久代的大小
    • PU: 持久代使用大小
    • OC: 当前老年代的大小
    • OU: 老年代使用大小
    • YGC: 年轻代gc的次数
    • FGC: FULL GC的次数
    • FGCT: FULL GC的时间
    • GCT: gc收集的时间
  • -gcoldcapacity: 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
  • -compiler: 输出JIT编译器编译过的方法、耗时等信息
    • Compiled Number of compilation tasks performed.
    • Failed Number of compilation tasks that failed.
    • Invalid Number of compilation tasks that were invalidated.
    • Time Time spent performing compilation tasks.
    • FailedType Compile type of the last failed compilation.
    • FailedMethod Class name and method for the last failed compilation.
  • -printcompilation: 输出被JIT编译的方法

参考:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html

jmap java内存映像工具

jmap [option] vmid

  • -dump:生成java堆转储快照,格式为:-dump:[live,]format=b,file=filename,其中live子参数说明是否只dump出存活的对象
  • -finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux/Solaris平台有效
  • -heap:显示java堆的详细信息,如使用那种回收器、参数配置、分代情况等,只在Linux/Solaris平台下有效
  • -histo:显示堆中的对象统计信息,包括类、实例数量、合计容量
  • -permstat:以ClassLoader为统计信息,包括类、实例数量、合计容量
  • -F:当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效

jhat 虚拟机堆转储快照分析工具

jhat命令与jmap搭配使用,来分析jmap生成的堆栈转储快照,jhat可以生成一个微型HTTP/HTML服务器,生成dump文件的分析结果可以在浏览器中查看。

jstack java堆栈跟踪工具

jstack [option] vmid

  • -F:当正常输出的请求不被影响时,强制输出线程堆栈
  • -l:除堆栈外,显示关于锁的附加信息
  • -m:如果调用到本地方法的话,可以显示C/C++的堆栈
CATALOG
  1. 1. SUN JDK 工具
    1. 1.1. jps 虚拟进程状态工具
    2. 1.2. jstat 虚拟机统计信息监视工具
    3. 1.3. jmap java内存映像工具
    4. 1.4. jhat 虚拟机堆转储快照分析工具
    5. 1.5. jstack java堆栈跟踪工具