AI智能
改变未来

[JVM工具(1)] 堆栈检查利器jstat的使用

jstat

  • 可以检查
    JVM

    整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及

    GC

    次数和耗时

  • 命令格式 如
    jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
  • 其中
    -option

    必选参数表示命令参数 如

    gc

    等,

    -t

    为可选参数表示是否打印时间(秒),

    -h<lines>

    可选参数,表示每隔多少行打印头部列表,如设置

    -h 5

    , 那么每五条记录就会重新打印表头,

    vmid

    必选参数,

    Java

    进程

    id

    interval

    可选参数表示采样的时间间隔,

    count

    可选参数表示需要采样多少条,

jstat -gc pid

  • jstat -gc pid

    这是最常用的语法,可以直接查看内存和垃圾回收情况

  • 首先我们要获得
    Java

    进程的

    PID

    信息,可以通过

    jps

    命令来获取

  • 之后执行
    jstat -gc pid

    即可看到对应

    Java

    进程的内存情况,如下:

  • 这里说明一下关于这些列名的含义

    S0C

    : 新生代中第一个

    Survivor

    (即

    From

    区)的容量大小 (千字节)

  • S1C

    : 新生代中第二个

    Survivor

    (即

    To

    区)的容量大小 (千字节)

  • S0U

    : 新生代

    From Survivor

    区已使用内存大小(千字节)

  • S1U

    : 新生代

    To Survivor

    区一使用内存大小(千字节)

  • EC

    : 新生代

    Eden

    区的容量大小(千字节)

  • EU

    : 新生代

    Eden

    区已使用内存大小(千字节)

  • OC

    : 老年代空间容量大小(千字节)

  • OU

    : 老年代已使用内存大小(千字节)

  • MC

    : 方法区的空间大小 (千字节)

  • MU

    : 方法区已使用的空间大小(千字节)

  • YGC

    : 从系统启动到现在

    Young GC/Minor GC

    的次数

  • YGCT

    :

    Young GC

    总耗时(秒)

  • FGC

    :从系统启动到现在

    Full GC

    的次数

  • FGCT

    :

    Full GC

    的总耗时(秒)

  • GCT

    : 垃圾回收总的耗时(秒)

  • NGCMN

    :年轻代(

    young

    )中初始化(最小)的大小 (千字节)

  • NGCMX

    :年轻代(

    young

    )的最大容量 (千字节)

  • GC

    :年轻代(

    young

    )中当前的容量 (千字节)

  • OGCMN

    old

    代中初始化(最小)的大小 (千字节)

  • OGCMX

    old

    代的最大容量 (千字节)

  • OGC

    old

    代当前新生成的容量 (千字节)

  • PGCMN

    perm

    代中初始化(最小)的大小 (千字节)

  • PGCMX

    perm

    代的最大容量 (千字节)

  • PGC

    perm

    代当前新生成的容量 (千字节)

  • S0

    :年轻代中

    From survivor

    (幸存区)已使用的占当前容量百分比

  • S1

    :年轻代中

    To Survivor

    (幸存区)已使用的占当前容量百分比

  • E

    :年轻代中

    Eden

    (伊甸园)已使用的占当前容量百分比

  • O

    old

    代已使用的占当前容量百分比

  • P

    perm

    代已使用的占当前容量百分比

  • S0CMX

    :年轻代中

    From survivor

    (幸存区)的最大容量 (千56c字节)

  • S1CMX

    :年轻代中

    To Survivor

    (幸存区)的最大容量 (千字节)

  • ECMX

    :年轻代中

    Eden

    (伊甸园)的最大容量 (千字节)

  • DSS

    :当前需要

    survivor

    (幸存区)的容量 (千字节)(

    Eden

    区已满)

  • TT

    : 持有次数限制

  • MTT

    : 最大持有次数限制

jstat -gcutil PID

  • 一般我们还可以通过
    jstat -gcutil pid

    来获取分代年龄的使用情况,显示为占比,如下,表头参考上面

jstat -gccapacity PID

  • -gccapacity

    命令主要用来分析堆内存,用法参考上面,如下效果,表头含义参看上面

其他一些命令参数

  • jstat -gcnew PID

    : 年轻代

    GC

    分析,其中1b52

    TT

    MTT

    可以看到对象在年龄代存活的年龄和存活的最大年龄

  • jstat -gcnewcapacity PID

    : 年轻代内存分析

  • jstat -gcold PID

    : 老年代

    GC

    分析

  • jstat -gcoldcapacity

    : 老年代内存分析

  • jstat -gcmetacapacity PID

    : 元数据内存分析

jstat -class PID

  • 统计进程中加载的类的数量,如下:

  • 说明:
Loaded:加载class的数量Bytes:所占用空间大小Unloaded:未加载数量Bytes:未加载占用空间Time:时间

jstat -compiler PID

  • 编译信息的统计命令, 如下命令
    jstat -class 15372

  • 说明:
Compiled:编译数量。Failed:失败数量Invalid:不可用数量Time:时间FailedType:失败类型FailedMethod:失败的方法

jstat -printcompilation PID

  • JVM

    编译方法的统计,如下命令

    jstat -printcompilation 15372

  • 说明:
Compiled:最近编译方法的数量Size:最近编译方法的字节码数量Type:最近编译方法的编译类型。Method:方法名标识。

好了今天就说到这里,

jstat

死一个非常还用的工具,需要平时多使用多分析才能真真掌握,下次我们接着说相关的工具的使用~????

本文由AnonyStar 发布,可转载但需声明原文出处。
欢迎关注微信公账号 :云栖简码 获取更多优质文章
更多文章关注笔者博客 :云栖简码 i-code.online

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » [JVM工具(1)] 堆栈检查利器jstat的使用