java - jstat:OGC & OC、PGC & PC 的区别

标签 java garbage-collection jstat

我正在学习 jstat 以及它可以告诉我有关 JVM 不同代的内容。来自 the jstat docs我知道新一代由伊甸园、s0 和 s1 组成。例如,如果您对以下内容进行数学运算,您会看到 NGC = EC + S0C + S1C。很棒的东西。

$ jstat -gccapacity -t 21830 5000
Timestamp        NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX           OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC 
       248767.4   2624.0  87360.0   6656.0  640.0  640.0   5376.0     5376.0   174784.0    12840.0    12840.0  21248.0 131072.0  34304.0  34304.0    457    73
       248772.4   2624.0  87360.0   6656.0  640.0  640.0   5376.0     5376.0   174784.0    12840.0    12840.0  21248.0 131072.0  34304.0  34304.0    457    73
       248777.3   2624.0  87360.0   6656.0  640.0  640.0   5376.0     5376.0   174784.0    12840.0    12840.0  21248.0 131072.0  34304.0  34304.0    457    73

我想知道它们之间有什么区别:

  • OGC(当前老年代容量(KB))和
  • OC(当前旧空间容量 (KB))。

同样适用于:

  • PGC(当前永久发电容量 (KB))和
  • PC(当前永久空间容量 (KB))。

每一对都具有相同的值(value),至少对我来说是这样。除了旧空间之外,老一代中还有什么吗?


编辑:我认为没有区别,但为了以防万一,我会留下这个问题。

最佳答案

我只是从jdk源码中寻找

简而言之: OGC = sum(所有 OC)

一个 gen 可以包含多个空格。

然而,Hotspot 老一代只有 1 个空间(年轻一代有 3 个: eden , s0 和 s1 ), jstat 为它们显示相同的值。

什么是 OC 和 OGC

来自 jdk/src/share/classes/sun/tools/jstat/resources/jstat_options

我得到了

OGC = sun.gc.generation.1.capacity

OC = sun.gc.generation.1.space.0.capacity

  column {
    header "^OGC^"  /* Old Generation Capacity - Current */
    data sun.gc.generation.1.capacity
    scale K
    align right
    width 11
    format "0.0"
  }
  column {
    header "^OC^"   /* Old Space Capacity - Current */
    data sun.gc.generation.1.space.0.capacity
    scale K
    align right
    width 11
    format "0.0"
  }

第 1 代有多少空间

运行下面的常规代码来检查

import java.lang.management.ManagementFactory
import sun.jvmstat.monitor.*;

name = ManagementFactory.runtimeMXBean.name
pid  = name[0..<name.indexOf('@')]
vmId = new VmIdentifier(pid)
vm   = MonitoredHost.getMonitoredHost(vmId).getMonitoredVm(vmId, 0)

println 'Y count :' + vm.findByName('sun.gc.generation.0.spaces').longValue()
println 'O count :' + vm.findByName('sun.gc.generation.1.spaces').longValue()

输出是:

Y count :3
O count :1

你可以对 GEN.2 (PERM GEN) 做同样的事情

关于java - jstat:OGC & OC、PGC & PC 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253285/

相关文章:

java - Full GC - Sun JVM 运行频率

javascript - JavaScript 中的直方图?

java - ElasticSearch:使用 Java-API 对字段值进行辅助索引

java - Spring Boot 尝试解析不在我的 xml 中的 bean

java - 可以增加引用旧对象的 gc 时间短命对象吗?

javascript - 如何调用jstat的student方法获取结果?

java - 根据正则表达式分割字符串

java - Android 上处理服务器端异常

.net - C++/CLI 中的垃圾收集

.net - 为什么从不调用 NET 垃圾收集器?