Java GC 各个变量含义 和 jstat 命令的使用

简介: Java GC 各个变量含义 和 jstat 命令的使用
前言
  • JDK版本 jdk1.8

在这里插入图片描述

  • jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

在这里插入图片描述

1:变量解释
  1. S0C:年轻代中第一个survivor(幸存区)的容量 (kb)
  2. S1C:年轻代中第二个survivor(幸存区)的容量 (kb)
  3. S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (kb)
  4. S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (kb)
  5. EC:年轻代中Eden(伊甸园)的容量 (kb)
  6. EU:年轻代中Eden(伊甸园)目前已使用空间 (kb)
  7. OC:Old代的容量 (kb)
  8. OU:Old代目前已使用空间 (kb)
  9. PC:Perm(持久代)的容量 (kb)
  10. PU:Perm(持久代)目前已使用空间 (kb)
  11. CCS:压缩使用比例
  12. YGC:从应用程序启动到采样时年轻代中gc次数
  13. YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
  14. FGC:从应用程序启动到采样时old代(全gc)gc次数
  15. FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  16. GCT:从应用程序启动到采样时gc用的总时间(s)
  17. NGCMN:年轻代(young)中初始化(最小)的大小 (kb)
  18. NGCMX:年轻代(young)的最大容量 (kb)
  19. NGC:年轻代(young)中当前的容量 (kb)
  20. OGCMN:old代中初始化(最小)的大小 (kb)
  21. OGCMX:old代的最大容量 (kb)
  22. OGC:old代当前新生成的容量 (kb)
  23. PGCMN:perm代中初始化(最小)的大小 (kb)
  24. PGCMX:perm代的最大容量 (kb)
  25. PGC:perm代当前新生成的容量 (kb)
  26. S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
  27. S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
  28. E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
  29. O:old代已使用的占当前容量百分比
  30. P:perm代已使用的占当前容量百分比
  31. M:元数据区使用比例
  32. S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (kb)
  33. S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (kb)
  34. ECMX:年轻代中Eden(伊甸园)的最大容量 (kb)
  35. DSS:当前需要survivor(幸存区)的容量 (kb)(Eden区已满)
  36. TT: 持有次数限制
  37. MTT : 最大持有次数限制
2:jstat 查看 JVM 内存情况常用命令

2.1:新生代垃圾回收统计jstat -gcnew pid
在这里插入图片描述

  • S0C:年轻代中第一个survivor(幸存区)的容量 (kb)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (kb)
  • S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (kb)
  • S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (kb)
  • TT:对象在新生代存活的次数
  • MTT:对象在新生代存活的最大次数
  • DSS:期望的幸存区大小,即当前需要survivor(幸存区)的容量 (kb)(Eden区已满)
  • EC:年轻代中Eden(伊甸园)的容量 (kb)
  • EU:年轻代中Eden(伊甸园)目前已使用空间 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

2.2:新生代内存统计jstat -gcnewcapacity pid
在这里插入图片描述

  • NGCMN:年轻代(young)中初始化(最小)的大小 (kb)
  • NGCMX:年轻代(young)的最大容量 (kb)
  • NGC:年轻代(young)中当前的容量 (kb)
  • S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (kb)
  • S0C:年轻代中第一个survivor(幸存区)的当前容量 (kb)
  • S1CMX:年轻代中第二个survivor(幸存区)的最大容量 (kb)
  • S1C:年轻代中第二个survivor(幸存区)的当前容量 (kb
  • ECMX:年轻代中Eden(伊甸园)的最大容量 (kb)
  • EC:年轻代中Eden(伊甸园)的容量 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数

2.3:老年代垃圾回收统计jstat -gcold pid
在这里插入图片描述

  • MC:方法区的容量 (kb)
  • MU:方法区目前已使用空间 (kb)
  • CCSC:压缩类空间容量 (kb)
  • CCSU:压缩类已使用空间 (kb)
  • OC:Old代的容量 (kb)
  • OU:Old代目前已使用空间 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

2.4:老年代内存统计jstat -gcoldcapacity pid
在这里插入图片描述

  • OGCMN:old代中初始化(最小)的大小 (kb)
  • OGCMX:old代的最大容量 (kb)
  • OGC:old代当前新生成的容量 (kb)
  • OC:Old代的容量 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

2.5:堆内存统计 jstat -gccapacity pid
在这里插入图片描述

  • NGCMN:年轻代(young)中初始化(最小)的大小 (kb)
  • NGCMX:年轻代(young)的最大容量 (kb)
  • NGC:年轻代(young)中当前的容量 (kb)
  • S0C:年轻代中第一个survivor(幸存区)的容量 (kb)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (kb)
  • EC:年轻代中Eden(伊甸园)的容量 (kb)
  • OGCMN:old代中初始化(最小)的大小 (kb)
  • OGCMX:old代的最大容量 (kb)
  • OGC:old代当前新生成的容量 (kb)
  • OC:Old代的容量 (kb)
  • MCMN:最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小,即方法区的容量 (kb)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:压缩类空间容量 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数

2.6:垃圾回收统计jstat -gc pid
在这里插入图片描述

  • S0C:年轻代中第一个survivor(幸存区)的容量 (kb)
  • S1C:年轻代中第二个survivor(幸存区)的容量 (kb)
  • S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (kb)
  • S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (kb)
  • EC:年轻代中Eden(伊甸园)的容量 (kb)
  • EU:年轻代中Eden(伊甸园)目前已使用空间 (kb)
  • OC:Old代的容量 (kb)
  • OU:Old代目前已使用空间 (kb)
  • MC:当前元数据空间大小,即方法区的容量 (kb)
  • MU:方法区目前已使用空间 (kb)
  • CCSC:压缩类空间容量 (kb)
  • CCSU:压缩类已使用空间 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时old代(全gc)gc次数

2.7:gc总回收信息统计jstat -gcutil pid
在这里插入图片描述

  • S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
  • S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
  • E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
  • O:old代已使用的占当前容量百分比
  • M:元数据区使用比例
  • CCS:压缩使用比例
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

2.8:类加载统计jstat -class pid
在这里插入图片描述

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

2.9:VM实时编译统计jstat -compiler pid
在这里插入图片描述

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

2.10:元数据空间统计jstat -gcmetacapacity 31682
在这里插入图片描述

  • MCMN::最小元数据容量
  • MCMX:最大元数据容量
  • MC:当前元数据空间大小,即方法区的容量 (kb)
  • CCSMN:最小压缩类空间大小
  • CCSMX:最大压缩类空间大小
  • CCSC:压缩类空间容量 (kb)
  • YGC:从应用程序启动到采样时年轻代中gc次数
  • FGC:从应用程序启动到采样时old代(全gc)gc次数
  • FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
  • GCT:从应用程序启动到采样时gc用的总时间(s)

2.11:JVM当前编译方法统计jstat -printcompilation 31682
在这里插入图片描述

  • Compiled:最近编译方法的数量
  • Size:最近编译方法的字节码数量
  • Type:最近编译方法的编译类型。
  • Method:方法名标识。
相关文章
|
6天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
1月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
2月前
|
存储 Java
java基础(7)变量以及变量的分类
Java变量是内存中存储数据的基本单元,包含数据类型、名称和字面值。变量的数据类型决定了分配的内存空间大小。变量声明格式为“数据类型 变量名;”,变量名应符合标识符命名规范。变量可以重新赋值,但数据类型需一致。变量可以一行声明多个,作用域决定了变量的可用范围。变量分为局部变量和成员变量,局部变量定义在方法体内,成员变量定义在方法体外、类体内。
40 2
|
14天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
4天前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
13 1
|
22天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
23天前
|
Java Windows
JAVA 常用的 DOS 命令
【10月更文挑战第15天】DOS 命令是 Java 开发中不可或缺的工具,掌握这些命令可以提高开发效率和操作便利性。
36 3
|
1月前
|
监控 Java Linux
Java 性能调优:调整 GC 线程以获得最佳结果
Java 性能调优:调整 GC 线程以获得最佳结果
67 11
|
1月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
76 4
|
1月前
|
运维 监控 Java
使用jps命令查看Java进程
`jps`是Java开发者和系统管理员的得力助手,它简化了Java进程监控的过程,使得快速检查应用运行状态变得轻而易举。通过合理利用其提供的参数,可以高效地进行故障排查、性能监控及日常管理任务,确保Java应用稳定运行。
59 2