乐趣区

关于java-ee:JVM工具1-堆栈检查利器jstat的使用

jstat

  • 能够查看 JVM 整体的运行状况,能够看到 新生代,老年代等的内存应用状况,以及GC 次数和耗时
  • 命令格局 如 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
  • 其中 -option 必选参数表示命令参数 如 gc 等,-t 为可选参数示意是否打印工夫(秒),-h<lines> 可选参数,示意每隔多少行打印头部列表,如设置 -h 5 , 那么每五条记录就会从新打印表头,vmid 必选参数,Java 过程idinterval 可选参数示意采样的工夫距离,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 ) 中以后的容量 (千字节)         
    • OGCMNold 代中初始化 (最小) 的大小 (千字节)         
    • OGCMXold 代的最大容量 (千字节)         
    • OGCold 代以后新生成的容量 (千字节)         
    • PGCMNperm 代中初始化 (最小) 的大小 (千字节)         
    • PGCMXperm 代的最大容量 (千字节)           
    • PGCperm 代以后新生成的容量 (千字节)         
    • S0:年老代中 From survivor(幸存区)已应用的占以后容量百分比         
    • S1:年老代中 To Survivor(幸存区)已应用的占以后容量百分比         
    • E:年老代中 Eden(伊甸园)已应用的占以后容量百分比         
    • Oold 代已应用的占以后容量百分比         
    • Pperm 代已应用的占以后容量百分比         
    • S0CMX:年老代中 From survivor(幸存区)的最大容量 (千字节)         
    • S1CMX:年老代中 To Survivor(幸存区)的最大容量 (千字节)         
    • ECMX:年老代中 Eden(伊甸园)的最大容量 (千字节)         
    • DSS:以后须要 survivor(幸存区)的容量 (千字节)(Eden 区已满)
    • TT:持有次数限度         
    • MTT :最大持有次数限度

jstat -gcutil PID

  • 个别咱们还能够通过 jstat -gcutil pid 来获取分代年龄的应用状况,显示为占比,如下,表头参考下面

jstat -gccapacity PID

  • -gccapacity 命令次要用来剖析堆内存,用法参考下面,如下成果,表头含意参看下面

其余一些命令参数

  • jstat -gcnew PID : 年老代GC 剖析,其中 TTMTT 能够看到对象在年龄代存活的年龄和存活的最大年龄

  • 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

退出移动版