我正在学习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(当前旧发电容量 (KB))和
- OC(当前旧空间容量 (KB))。
同样适用于:
- PGC(当前永久发电能力(KB))和
- PC(当前永久空间容量 (KB))。
每对都有相同的价值,至少对我来说,现在是这样。除了旧空间之外,老一辈人还有什么吗?
编辑:我认为没有区别,但我会留下这个问题以防万一。
我只是从 jdk 源代码中寻找
总之: OGC = sum(all OC)
一个世代可以包含多个空格。
但是,热点老世代只有1个空间(年轻一代有3个:伊甸园,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"
}
第 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) 做同样的事情