10

我正在学习 jstat 以及它可以告诉我有关 JVM 不同代的信息。从jstat 文档中,我了解到新一代由 eden、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))。

每对都有相同的价值,至少对我来说,现在。除了旧空间之外,旧一代中是否有任何东西?


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

4

1 回答 1

10

我只是从jdk源中寻找

简而言之: OGC = sum(all OC)

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

但是,Hotspot old gen 只有 1 个空间(young gen 有 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"
  }

GEN.1 中有多少个空间

运行下面的 groovy 代码来检查

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) 做同样的事情

于 2013-10-31T05:51:00.857 回答