提问的原因,是我在看官方文档时看见这三个英文是不一样
我以前以为 新生代(new generation) 和 年轻代(young generation)是同一个只是翻译导致看起来不同而已,现在看起来视乎不是这样。
至于为什么会提到伊甸园(eden space),是因为在某个博客看见了下面的描述,我感觉不太对,但我对其不是特别熟
提问的原因,是我在看官方文档时看见这三个英文是不一样
我以前以为 新生代(new generation) 和 年轻代(young generation)是同一个只是翻译导致看起来不同而已,现在看起来视乎不是这样。
至于为什么会提到伊甸园(eden space),是因为在某个博客看见了下面的描述,我感觉不太对,但我对其不是特别熟
这是暂时我找到的官方性质的说明,该说明我是在 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 而已。当然我暂未找到官方的说法来支持我的论点,如果有找到支持或反对我的说法,也非常欢迎提出
8 回答6.8k 阅读
4 回答1k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答647 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1.5k 阅读
jdk1.8中没有永久代的概念,所以堆大小 = 年轻代 + 老年代
其中年轻代由一个 eden 和两个 survivor 组成,其中 from 和 to 的大小一样。
顺路说下 young gc