Ste*_*let 9 java garbage-collection jstat
我正在学习jstat以及它可以告诉我有关JVM不同代的内容.从jstat docs我了解到新的gen由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
Run Code Online (Sandbox Code Playgroud)
我想知道之间的区别是什么:
同样适用于:
至少对我来说,每对都具有相同的价值.在旧空间旁边,老一代有什么东西吗?
我只是从jdk源寻求
简而言之:
OGC = sum(all OC)
一代可能包含多于一个空格.
但是,Hotspot old gen只有1个空格(年轻的gen有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"
}
Run Code Online (Sandbox Code Playgroud)
GEN.1中有多少空间
在下面运行groovy代码来检查
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()
Run Code Online (Sandbox Code Playgroud)
输出是:
Y count :3
O count :1
Run Code Online (Sandbox Code Playgroud)
你可以为GEN.2(PERM GEN)做同样的事情