JVM性能分析-jstat工具观察gc频率

jstat

  • jstat是java自带的工具,在bin目录下

用法

  • 语法:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
shell 复制代码
[kq@kyyj-2 bin]$ jstat -help
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

Definitions:
  <option>      An option reported by the -options option
  <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                     <lvmid>[@<hostname>[:<port>]]
                Where <lvmid> is the local vm identifier for the target
                Java virtual machine, typically a process id; <hostname> is
                the name of the host running the target Java virtual machine;
                and <port> is the port number for the rmiregistry on the
                target host. See the jvmstat documentation for a more complete
                description of the Virtual Machine Identifier.
  <lines>       Number of samples between header lines.
  <interval>    Sampling interval. The following forms are allowed:
                    <n>["ms"|"s"]
                Where <n> is an integer and the suffix specifies the units as 
                milliseconds("ms") or seconds("s"). The default units are "ms".
  <count>       Number of samples to take before terminating.
  -J<flag>      Pass <flag> directly to the runtime system.
  • options 命令选项
  • -t 在打印的列加上Timestamp列,用于显示系统运行的时间
  • -h 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
  • vim Virtual Machine ID( 进程的 pid)
  • interval 为刷新间隔时间 s 表示秒,ms 表示毫秒 (不带单位默认毫秒)
  • count 表示刷新次数 (不带该参数一直循环执行)
  • 例如:
shell 复制代码
# 每隔1秒执行一次  共执行20次
jstat -gcutil 10641 1000  20
options 选项:
shell 复制代码
-gc:显示垃圾回收统计信息
-class:显示类加载和卸载统计信息
-compiler:显示 JIT 编译器统计信息
-gcnew:显示新生代垃圾回收统计信息
-gcold:显示老年代垃圾回收统计信息
-gcutil:显示垃圾回收统计摘要信息。
-printcompilation:显示 JIT 编译方法列表

使用jstat工具分析gc频率

  • 使用ps -ef|grep port 先查看下应用pid
  • 查到应用进程号为 16410
  • 查询gc情况
shell 复制代码
# 每隔1秒执行一次 共执行20次
jstat -gcutil 10641 1000  20
  • 字段解释
shell 复制代码
S0:幸存1区当前使用比例
S1:幸存2区当前使用比例
E:伊甸园区使用比例
O:老年代使用比例
M:元数据区使用比例
CCS:压缩使用比例
YGC:年轻代垃圾回收次数 发生15次YGC 15次YGC共耗时1.45秒
YGCT:年轻代垃圾回收消耗时间(单位秒)
FGC:老年代垃圾回收次数 发生5次FGC
FGCT:老年代垃圾回收消耗时间(单位秒) 5次FCC共耗时1.545秒
GCT:垃圾回收消耗总时间(单位秒)  gc共耗时2.995秒
  • 下面一直循环打印gc情况jstat -gcutil 10641 1000
  • 可以看到目前YGC 16次 FGC 5次
  • 下面一直监控gc的变化
  • 通过上图可以看出
  • 伊甸园区满了之后触发YGC
  • YGC触发之后,清理伊甸园区和S0,并把为清理的对象转移到S1区
  • 继续监控gc情况
  • 可以看到,YGC重复之前的动作,只不过是从S1转移到了S0
  • 正常 S0和S1有一个是空的,如果两个都被占用可能存在内存泄漏
相关推荐
在未来等你3 分钟前
互联网大厂Java求职面试:AI大模型推理优化与实时数据处理架构
java·ai·大模型·向量数据库·rag·分布式系统
买了一束花6 分钟前
预分配矩阵内存提升文件数据读取速度
java·人工智能·算法·matlab
zizisuo19 分钟前
Java集合框架深度剖析:结构、并发与设计模式全解析
java·javascript·数据结构·设计模式
要加油哦~25 分钟前
刷题 | 牛客 - js中等题-下(更ing)30/54知识点&解答
java·开发语言·javascript
程序员鱼皮1 小时前
炸裂!Spring AI 1.0 正式发布,让 Java 再次伟大!
java·计算机·ai·程序员·互联网·开发
俺不是西瓜太郎´•ﻌ•`1 小时前
欧拉降幂(JAVA)蓝桥杯乘积幂次
java·开发语言·蓝桥杯
神码小Z1 小时前
Spring Cloud Gateway 微服务网关实战指南
java·spring boot·spring cloud
EQ-雪梨蛋花汤2 小时前
【如何做好一份技术文档?】用Javadoc与PlantUML构建高质量技术文档(API文档自动化部署)
java·api·ci·plantuml·doc
MaCa .BaKa2 小时前
40-智慧医疗服务平台(在线接/问诊/机器学习)
java·spring boot·mysql·机器学习·maven·numpy·pandas
Uranus^2 小时前
深入解析Spring Boot与Spring Security的集成实践
java·spring boot·spring security·认证与授权