我正在学习jstat以及它可以告诉我有关JVM的不同版本的信息。从the jstat docs可以理解,新一代是由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))。

  • 至少对于我而言,每对现在都具有相同的值。除了旧空间,旧时代中还有其他东西吗?

    编辑:我不认为有什么区别,但是为了以防万一,我将保留这个问题。

    最佳答案

    我只是从jdk来源寻求

    简而言之:OGC = sum(all 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.capacityOC = 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中有多少空间

    运行下面的常规代码来检查
    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)执行相同的操作

    07-24 21:45