美文网首页
Java虚拟机知识点【工具】

Java虚拟机知识点【工具】

作者: O_Neal | 来源:发表于2019-07-27 01:36 被阅读0次

    命令行工具

    1. jps

    JVM Process Status Tool,显示虚拟机进程。
    用法jps [-q] [-mlvV]
    参数说明

    • -q:打印进程号
    • -l:打印启动类的全限定名
    • -m:打印启动类的 main 方法入参
    • -v:打印指定的虚拟机参数
    • -V:打印类名

    例子jpsjps -l

    2、jstat

    JVM statistics Monitoring,对Java虚拟机内存进行监控统计。
    用法jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
    参数说明

    • option:操作,常用的就是gcutil,统计垃圾回收情况。
    • -t:显示时间戳列
    • -h<lines>:指定多少行显示标题
    • -vmid:进程ID
    • -interval:每行输出的时间间隔
    • -count:指定输出行数

    例子jstat -gcutil -h2 -t 15754 100 5,表示监控进程号15754的垃圾收集统计值,每隔100ms输出一行,总共输出5次,每输出2次需要重新输出标题。

    [root@root ~]# jstat -gcutil -h2 -t 15754 100 5
    Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
         11296830.0   0.00 100.00  21.80  25.80  98.41  96.33 113648 2500.825     0    0.000 2500.825
         11296830.2   0.00 100.00  21.80  25.80  98.41  96.33 113648 2500.825     0    0.000 2500.825
    Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
         11296830.3   0.00 100.00  21.80  25.80  98.41  96.33 113648 2500.825     0    0.000 2500.825
         11296830.4   0.00 100.00  21.80  25.80  98.41  96.33 113648 2500.825     0    0.000 2500.825
    Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
         11296830.5   0.00 100.00  21.80  25.80  98.41  96.33 113648 2500.825     0    0.000 2500.825
    

    输出的指标说明

    • S0:survivor 0 已用空间占比
    • S1:survivor 1 已用空间占比
    • E:Eden 区已用空间占比
    • O:老年代已用空间占比
    • M:元数据已用空间占比
    • CCS:压缩类空间占比
    • YGC:Mirror GC 次数
    • YGCT:Mirror GC 消耗时间
    • FGC:Full GC 次数
    • FGCT:Full GC 消耗时间
    • GCT:垃圾回收消耗总时间

    3. jinfo

    JVM Configuration info,可以实时查看和实时修改虚拟机参数。
    用法jinfo [option] <pid>
    参数说明

    • option:操作

    -flag <name> 打印指定的VM参数的值
    -flag [+|-]<name> 启用或禁用指定的VM参数
    -flag <name>=<value> 修改VM参数
    -flags 打印VM参数
    -sysprops 打印Java系统配置

    • pid:进程ID

    例子jinfo 15754jinfo -flags 15754

    4. jmap

    JVM Memory Map,用来生成堆栈dump文件。
    用法jmap [option] <pid>
    参数说明

    • option:操作

    heap:打印Java堆摘要
    histo[:live]:打印java对象堆的直方图; 如果指定了“live”选项,则仅计算实时对象
    dump:生成dump快照

    • pid:进程ID

    例子jmap -heap 15754jmap -histo:live 15754jmap -dump:live,file=.\heap_dump.hprof 15754

    5. jstack

    用来生成Java虚拟机当前时刻的线程快照,方便定位线程长时间停顿的问题,比如死锁、死循环、长时间等待等。
    用法jstack -F [-m] [-l] <pid>
    参数说明

    • -F:强制打印堆栈
    • -m:同时打印Java和本地方法的堆栈
    • -l:打印关于锁的附件信息
    • pid:进程ID

    例子jstack -l 15754

    6. jhat

    JVM Heap Analysis Tool,用来分析jmap生成的堆栈日志,生成HTML文件。一般会用可视化工具来分析堆栈日志,比如MAT。

    7. jcmd

    JDK建议使用 jcmd 替代 jstack、jinfo、jmap 等命令。
    例子

    • jcmd -l:列出所有Java虚拟机。
    • jcmd 15754 help:列出该虚拟机支持的命令。
    • jcmd 15754 PerfCounter.print:获取所有性能相关的数据。
    • jcmd 15754 GC.class_histogram

    可视化监控工具

    常用的工具

    1. jconsole:JDK自带监控工具
    2. jvisualvm:JDK自带监控工具,比jconsole显示更多监控数据
    3. jmc:也是JDK自带监控工具,比jvisualvm显示更多监控数据
    4. MAT:Memory Analyzer Tool,Java虚拟机内存分析工具,能够快速的分析dump日志。

    参考资料:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

    相关文章

      网友评论

          本文标题:Java虚拟机知识点【工具】

          本文链接:https://www.haomeiwen.com/subject/bqfelctx.html