这是暂时我找到的官方性质的说明,该说明我是在 java version "1.8.0_211" 的jmap -heap 找到的,java version "1.8.0_181" 的 jmap -heap 也没有写 new generation。
new generation = eden + 1 Survivor Space (这里应该是指from survivor)
接下来我尝试通过计算求证一下
NGC(Current new generation capacity)
S0C(Current survivor space 0 capacity)
S1C(Current survivor space 0 capacity)
EC(Current eden space capacity)
计算过程略
发现
2432.0 + 2432.0 + 19456.0 = 24320.0
S0C + S1C + EC = NGC
但是 S0C + S1C + EC 是等于年轻代的
那我暂时只能得出 jmap 的 new generation 和 jstat -gccapacity 中的不是同一个 new generation ,jstat 中的 new generation 应该是年轻代。
题外:其实刚刚说的 jmap 中的 new generation 视乎和本次的 new generation 没太大关联,不过我看见了jmap里有,就顺便拉出来说一下。jdk的文档中经常会看见 “old and new generation” 和 “tenured generation and young generation” 的写法,new generation 可能在更多地方是代指 young generation 而已。当然我暂未找到官方的说法来支持我的论点,如果有找到支持或反对我的说法,也非常欢迎提出