美文网首页
java分析工具

java分析工具

作者: 3517a85fd522 | 来源:发表于2019-01-23 18:12 被阅读0次

    java分析工具

    • jinfo
    • jstat
    • jmap
    • jstack

    1.jinfo

    查看java进程的扩展参数

    • -flag <name> 查看某个jvm参数
    • -flag +/- <name> 动态开启或关闭部分jvm参数
    • -flag name=value 修改部分jvm参数
    • flags 查看所有jvm参数
    • -sysprops 查看系统参数(System.getProperties())
    ①-flag <name> 查看某个jvm参数
    jvm参数
    ②flag +/- <name> 动态开启或关闭部分jvm参数

    查看可关闭或开启的jvm参数
    java -XX:+PrintFlagsFinal -version|grep manageable

    image.png
    关闭某个进程的GC日志
    image.png
    ③ -flag name=value 修改部分jvm参数
    image.png
    ④flags 查看所有jvm参数
    image.png
    sysprops 查看系统参数
    image.png

    2. jstat (Java Virtual Machine statistics monitoring tool)虚拟机统计监控工具

    查看堆内存各部分使用量,加载类的数量


    jstat

    option: 参数选项

    -t: 可以在打印的列加上Timestamp列,用于显示系统运行的时间

    -h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头

    vmid: Virtual Machine ID( 进程的 pid)

    interval: 执行每次的间隔时间,单位为毫秒

    count: 用于指定输出多少次记录,缺省则会一直打印

    image.png
    options 说明
    -class 显示类加载相关信息
    -gc 垃圾回收统计
    -gccapacity 堆内存统计
    -gcnew 新生代垃圾回收统计
    -gcnewcapacity 新生代内存统计
    -gcold 老年代垃圾回收统计
    -gcoldcapacity 老年代内存统计
    -gcmetacapacity 元数据空间统计
    -gcutil 显示垃圾收集信息
    -gccause 显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因
    -compiler 显示JIT编译相关信息
    -printcompilation 输出JIT编译的方法信息
    ① -class 类加载统计
    -class
    参数 解释
    loaded 已加载的类数量
    Bytes 所占空间大小
    Unloaded 已卸载的类数量
    Bytes 已卸载类的空间大小
    Time 装载类卸载类话费时间
    ② -gc垃圾回收统计
    image.png
    参数 解释
    S0C 年轻代中第一个survivor的大小(字节)
    S1C 第二个survivor大小
    S0U 第一个survivor已使用大小
    S1U 第二个survivor已使用大小
    EC Eden总大小
    EU Eden已使用大小
    OC 老年代大小
    OU 老年代已使用大小
    MC metaspace(元数据空间)大小
    MU 元数据已使用大小
    CCSC 压缩类空间大小
    CCSU 压缩类已使用空间大小
    YGC 年轻代GC次数
    YGCT 年轻代GC消耗时间(s)
    FGC 老年代GC次数
    FGCT 老年代GC消耗时间
    GCT GC总消耗时间
    ③-gccapacity 堆内存统计
    image.png
    参数 说明
    NGCMN 新生代最小容量
    NGCMX 新生代最大容量
    NGC 当前新生代容量
    S0C 第一个survivor大小
    S1C 第二个survivor大小
    EC Eden大小
    OGCMN 老年代最小容量
    OGCMX 老年代最大容量
    OGC 老年代当前容量
    OC 老年代容量
    MCMN metaspace最小容量
    MCMX metaspace最大容量
    MC metaspace当前大小
    CCSMN 压缩类空间最小容量
    CCSMX 压缩类空间最大容量
    CCSC 压缩类空间当前大小
    YGC 新生代gc次数
    FGC 老年代gc次数
    ④-gcnew 新生代gc统计
    image.png
    参数 说明
    S0C 第一个survivor大小
    S1C 第二个survivor大小
    S0U 第一个survivor已使用大小
    S1U 第二个survivor已使用大小
    TT 对象在新生代存活的次数???
    MTT 对象在新生代存活的最大次数
    DSS 期望的survivor大小???
    EC Eden大小
    EU Eden已使用大小
    YGC 新生代gc次数
    TGCT 新生代GC消耗时间
    ⑤-gcnewcapacity 新生代内存统计
    image.png
    参数 说明
    NGCMN 年轻代最小容量
    NGCMX 年轻嗲最大容量
    NGC 当前年轻代大小
    S0CMX survivor1最大容量
    S0C 当前survivor1大小
    S1CMX survivor2最大容量
    S1C 当前survivor2大小
    ECMX Eden最大容量
    EC 当前Eden大小
    YGC 年轻代GC次数
    FGC 老年代GC次数
    ⑥-gcold 老年代gc统计
    image.png
    参数 说明
    MC 方法区(metaspace)大小
    MU metaspace已使用大小
    CCSC 压缩类空间大小
    CCSU 压缩类空间已使用大小
    OC 老年代大小
    OU 老年代已使用大小
    YGC 年轻代GC次数
    FGC 老年代GC次数
    FGCT 老年代GC消耗时间
    GCT GC消耗总时间
    ⑦-gcoldcapacity 老年代内存统计
    image.png
    参数 说明
    OGCMN 老年代最小容量
    OGCMX 老年代最大容量
    OGC 当前老年代大小
    OC 老年代大小
    YGC 年轻代次数
    FGC 老年代GC次数
    FGCT 老年代GC消耗时间
    GCT GC总消耗时间
    ⑧-gcmetacapacity 元数据空间内存统计
    image.png
    参数 说明
    MCMN metaspace最小容量
    MCMX metaspace最大容量
    MC 当前metaspace大小
    CCSMN 压缩类空间最小容量
    CCSMX 压缩类空间最大容量
    CCSC 当前压缩类空间大小
    YGC 年轻代GC次数
    FGC 老年代GC次数
    GCT GC总消耗时间
    ⑨-gcutil gc统计
    image.png
    参数 说明
    S0 survivor1使用比率
    S1 survivor2使用比率
    E Eden使用占Eden总容量的百分比
    O 老年代使用比率
    M metaspace使用比率
    CCSC 压缩类空间使用比率
    YGC 年轻代gc次数
    YGCT 年轻代GC消耗时间
    FGC 老年代GC次数
    FGCT 老年代GC消耗时间
    GCT GC消耗总时间
    ⑩-gccause 显示gc信息,比-gcutil 多了一项 最后一次或当前发生GC的原因,
    image.png
    参数 说明
    LGCC 最后一次发生GC的原因
    GCC NoGC(当前没有发生GC)
    ⑪ -compiler 显示JIT编译信息
    image.png
    参数 说明
    Compoled 编译任务执行数量
    Failed 编译任务执行失败的数量
    Invalid 编译任务执行失效的数量
    Time 编译任务消耗时间
    FailedType 最后一个编译任务失败的类型
    FailedMethod 最后一个编译任务失败 所在的类及方法
    ⑫ -printcompilation 当前vm执行信息
    image.png
    参数 说明
    Compiled 编译任务执行数量
    Size 方法生成的字节码大小
    Type 编译类型
    Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

    3.jmap 查看内存信息

    ①查看类实例数及占用内存大小
    image.png

    log.txt 文件内容如下


    image.png
    ②堆信息
    image.png
    image.png
    ③堆内存dump
    image.png

    也可以设置内存溢出自动导出dump文件(内存很大的时候可能导不出来):
    -XX:+HeapDumpOnOutOfMemory
    -X:HeapDumpPath=./


    image.png

    可以用jvisualvm命令工具导入该dump文件分析


    image.png

    jstack 堆栈跟踪工具,生成当前时刻的线程快照

    image.png

    可以使用jstack进行死锁检测


    死锁 image.png

    相关文章

      网友评论

          本文标题:java分析工具

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