2012-06-28 8 views
9

Sto imparando su jstat e cosa può dirmi sulle diverse generazioni della JVM. Da the jstat docs capisco che il nuovo gen è composto da eden, s0 e s1. Ad esempio, se si fa il calcolo di seguito, si vede che NGC = EC + S0C + S1C. Grandi cose.jstat: differenza tra OGC e OC, PGC e PC

$ 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 

mi chiedo qual è la differenza tra:

  • OGC (attuale capacità di generazione vecchia (KB)) e
  • OC (attuale vecchia capacità di spazio (KB)).

E allo stesso modo per:

  • PGC (capacità di generazione permanente di corrente (KB)) e
  • PC (Corrente permanente capacità di spazio (KB)).

Ogni coppia ha lo stesso valore, almeno per me, adesso. C'è mai qualcosa nella vecchia generazione accanto al vecchio spazio?


Modifica: Non penso che ci sia una differenza, ma lascerò questa domanda per ogni evenienza.

risposta

7

ho appena cercano dalla sorgente JDK

in breve: OGC = sum(all OC)

A Gen può contenere più di uno spazi.

Tuttavia, Hotspot vecchio gen ha solo 1 spazio (gen giovane ha 3: eden, s0 e s1), jstat mostra lo stesso valore per loro.

QUAL E 'OC e OGC

da jdk/src/share/classes/sun/tools/jstat/resources/jstat_options

ho ottenuto

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" 
    } 

quanti spazi IN Gen.1

run codice Groovy qui sotto per esaminare

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 è:

Y count :3 
O count :1 

si può fare lo stesso per GEN.2 (PERM GEN)

+0

Questa è una grande risposta, ma è possibile rimuovere le parolacce inutili? –

+0

@SteveKehlet mi dispiace – farmer1992