I'm learning about jstat and what it can tell me about the JVM's different generations. From the jstat docs I understand the new gen is made up of eden, s0 and s1. For example, if you do the math on the following, you see that NGC = EC + S0C + S1C. Great stuff.
$ 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
I'm wondering what's the difference between:
And similarly for:
Each pair has the same value, at least for me, right now. Is there ever anything in the old generation beside the old space?
jstat is a simple utility tool, that is present in JDK to provide JVM performance-related statistics like garbage collection, compilation activities. The major strength of jstat is its ability to capture these metrics dynamically when JVM is running without any pre-requisite instrumentation.
The jstat utility uses the built-in instrumentation in the Java HotSpot VM to provide information about performance and resource consumption of running applications. The tool can be used when diagnosing performance issues, and in particular issues related to heap sizing and garbage collection.
The jstat command displays performance statistics for an instrumented Java HotSpot VM. The target JVM is identified by its virtual machine identifier, or vmid option. The jstat command supports two types of options, general options and output options.
FGC : Number of full GC events. FGCT : Full garbage collection time. GCT : Total garbage collection time. -printcompilation option. Java HotSpot VM compiler method statistics.
I just seek from the jdk source
in short:
OGC = sum(all OC)
A gen may contain MORE THAN ONE spaces.
However, Hotspot old gen has only 1 space ( young gen has 3: eden , s0 and s1 ), jstat shows the same value for them.
WHAT IS OC and OGC
from 
jdk/src/share/classes/sun/tools/jstat/resources/jstat_options
I got
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"
  }
HOW MANY SPACES IN GEN.1
run groovy code below to examine
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()
output is:
Y count :3
O count :1
You can do the same for GEN.2 (PERM GEN)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With