外观
一句话答案
堆分新生代(Eden:S0:S1=8:1:1)和老年代,新对象在 Eden 分配,GC 存活后复制到 Survivor,年龄达 15 晋升老年代。
核心要点
新生代: Eden(80%) + S0(10%) + S1(10%)
GC流程: Eden满→Minor GC→存活复制到S1→年龄+1→达阈值(默认15)→晋升老年代
大对象直接进老年代:超过 -XX:PretenureSizeThreshold
追问与易错
追问方向:
- 为什么 Eden 和 Survivor 比例是 8:1:1?
- 大对象直接进老年代的阈值是多少?
- 对象什么时候晋升老年代?
易错点:
- ❌ 所有对象都从 Eden 分配——大对象直接进老年代
- ❌ 混淆 Minor GC 和 Full GC 的触发条件
💡 记忆锚点
新生代是幼儿园(Eden占80%是操场),两个Survivor是轮换教室(各10%),每次GC存活就转学一次年龄+1,熬过15次的"老员工"晋升老年代。大对象(超大件行李)不进幼儿园,直接入住老年代。