2012-06-28 17 views
9

Ben jstat öğrenmeye ve ne JVM farklı kuşaklar hakkında bilgi verir misin ediyorum arasındaki fark. the jstat docs itibaren yeni nesil eden, s0 ve s1 oluşur anlıyoruz. Örneğin, aşağıdakileri matematik yaparsanız, NGC = EC + S0C + S1C olduğunu görürsünüz. Harika şeyler.jstat: OGC & OC, PGC & PC

  • OGC (Güncel eski nesil kapasitesi (KB)) ve
  • OC (Güncel eski uzay kapasitesi (KB)):

    $ 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 
    

    ben arasındaki fark nedir merak ediyorum.

Ve benzer için:

  • PGC (Güncel Daimi nesil kapasitesi (KB)) ve
  • PC (Güncel Daimi uzay kapasitesi (KB)).

Her çift şimdi, en azından benim için, aynı değere sahip. Eski kuşakta eski mekanın yanında bir şey var mı?


Düzenleme: Ben bir fark olduğunu sanmıyorum, ama ben bu durumda her şeyden ayrılacağım.

cevap

7

Sadece kısaca jdk kaynağı

aradığımız: OGC = sum(all OC)

A gen BİRDEN FAZLA boşluk içerebilir. Ancak, Hotspot eski genin sadece 1 alanı vardır (genç gende 3: eden, s0 ve s1), jstat onlar için aynı değeri gösterir.

aldığım OC ve OGC

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

gelen NEDİR

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 İÇİNDE

KAÇ UZAYLAR aşağıda

çalıştırmak harika kod incelemek için

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() 

çıktısı:

Y count :3 
O count :1 

Sen GEN.2 için de yapabilirsiniz (PERM GEN)

+0

Bu büyük cevaptır ama gereksiz küfür kaldırabilirim? –

+0

@SteveKehlet üzgün – farmer1992

İlgili konular