jstat 分析

发布时间: 3年前 (2021-07-21)浏览: 968评论: 0

stat分析

 

jstat是一个简单的实用工具,在JDK中存在,用于提供与JVM性能相关的统计信息,例如垃圾收集,编译活动。 jstat的主要优势在于,它可以在运行JVM且无需任何先决条件的情况下动态捕获这些指标。 这是什么意思? 例如,如果要捕获与垃圾回收相关的统计信息,则需要在启动JVM之前传递以下参数:

 -Xlog:gc*:file={file-path}


此参数将启用GC日志并将其打印在指定的文件路径中。 假设您尚未传递此参数,那么将不会生成与GC相关的统计信息。 这是jstat可以派上用场的地方。 您可以动态地连接到JVM并捕获GC,编译相关的统计信息如下所示。

如何启动jstat?

执行以下命令。 这是启动jstat的简单选项。

 jstat -gc -t 11656 10000 30


-gc :将显示与垃圾收集相关的统计信息

自JVM启动以来的-t时间戳将被打印

11656:目标JVM进程ID

10000:每10,000毫秒(即10秒)将打印一次统计信息。

30 :将打印30次迭代的统计信息。 因此,以上选项将导致JVM打印指标300秒(即10秒x 30次迭代)。

(请注意,除了-gc之外,您还可以传递其他各种选项来生成不同的数据集。有关不同选项的更多详细信息,请参见此处 。)

jstat生成的数据

当使用上述选项启动jstat时,将生成以下输出:

 
图:jstat输出

时间戳记-自目标JVM启动时间以来的时间(以秒为单位)。

S0C –幸存者0区域的容量,以KB为单位

S1C –幸存者1区域的容量,以KB为单位

S0U –幸存者0区域使用的空间以KB为单位

S1U –幸存者1区域以KB为单位使用空间

EC –伊甸园地区容量(KB)

EU–伊甸园地区的已利用空间(以KB为单位)

OC –旧区域容量(KB)

OU –旧区域的已利用空间,以KB为单位

MC –元空间区域容量,以KB为单位

MU –元空间区域使用的空间以KB为单位

CCSC –压缩类空间区域的容量,以KB为单位

CCSU –压缩类空间区域以KB为单位使用空间

YGC –迄今为止发生的年轻GC事件的数量

YGCT –到目前为止,年轻GC花费的时间

FGC –迄今为止已发生的完全GC事件的数量

FGCT –到目前为止已花费的完整GC时间

GCT –到目前为止所花费的GC时间总量(基本上是YGCT + FGCT)

如何解释jstat输出?

有了此信息,让我们尝试解释上述示例中jstat工具打印的第一行:

 
图:jstat输出的第一行
时间戳记  自JVM启动以来的时间(以秒为单位)= 164.9秒
年轻一代的能力  年轻一代由幸存者0,幸存者1,伊甸园地区组成。因此,容量为:

S0C + S1C + EC

= 116224.0 + 116224.0 + 116736.0

= 349184 kb

= 341 mb

年轻一代利用尺寸  

S0U + S1U +欧盟

= 0 + 1520 + 68761.8

= 70281.8 kb

= 68.63 mb

老一代容量 OC= 431616 kb

= 421.5 mb

上一代利用尺寸  OU= 280502.5 kb

= 273.93 mb

元空间容量 MC= 32384 kb

= 31.62 mb

元空间利用的大小 MU
= 31155.5 kb

= 30.42mb

年轻GC计数  YGC= 29
在Young GC中花费的时间 YGCT
= 0.836秒
在GC中花费的总时间 GCT= 2.27秒

分析jstat输出的工具

jstat的挑战之一是您需要手动分析生成的统计信息。 正如您看到的那样,仅了解/解释一行内容将花费很长时间,这将很繁琐。 您可以使用GCeasy工具,该工具可以解析jstat输出并生成有洞察力的图形和指标。 这是GCeasy通过分析上述jstat输出生成的jstat分析报告

jstat的局限性

jstat有某些限制:

(一个)。 jstat没有提供有关GC活动的丰富详细信息。 它仅提供足够的信息。 来自jstat的示例,您将不知道:

  1. 如果一次采样中报告了多个GC事件 ,我们将不知道每个GC事件的暂停时间是多少。

  2. 用户(即Java层),系统(即内核)和用户花费了多少时间

  3. 有多少个GC线程正在工作,并占用了多少时间?

  4. 一个GC事件具有几个子阶段(例如初始标记,清理,备注,并发标记……)。 信息分类不可用。

  5. 每个GC事件回收了多少字节

(b)。 有时,jstat报告的数据也会产生误导

如果您想进行准确的GC分析,GC日志是更可靠的方法。

翻译自: https://www.javacodegeeks.com/2019/11/jstat-analysis.html


标签:

上一篇: 命令行中 javac、java、javap 的使用详解
下一篇: java博客推荐

相关文章暂无相关
评论列表暂无评论
发表评论
验证码

«   2024年4月   »
1234567
891011121314
15161718192021
22232425262728
2930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接
    • RainbowSoft Studio Z-Blog
    • 订阅本站的 RSS 2.0 新闻聚合
    ︿
    Top