JSTAT: разница между OGC и OC, PGC и ПК
Я узнаю о 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 (Текущая мощность старой генерации (КБ)) и
- OC (текущая емкость старого пространства (КБ)).
И аналогично для:
- PGC (Текущая постоянная мощность генерации (КБ)) и
- ПК (текущая постоянная емкость (КБ)).
Каждая пара имеет одинаковое значение, по крайней мере для меня, прямо сейчас. Есть ли что-нибудь в старом поколении, кроме старого пространства?
Редактировать: я не думаю, что есть разница, но я оставлю этот вопрос на всякий случай.
1 ответ
Я просто ищу из источника JDK
короче:OGC = sum(all OC)
В гене может быть больше одного пробела.
Однако у старого поколения Hotspot есть только 1 пробел (у молодого поколения 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
запустите отличный код ниже, чтобы изучить
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)