Young
Eden
- 所有新创建的对象都在Eden区
- 当Eden满后会触发minor GC将仍然存货的对象复制到其中一个Survivor
2Survivor
- minor GC后,一个Survivor中存活的对象会复制到另外一个,保证其中一个Survivor始终是空的
Old
- Survivor满后触发 minor GC后仍然存活的对象会到Old中,如果Survivor中的对象足够老也会存到Old中
- 如果Old区满了会触发Full GC,回收整个堆内存
Perm
- 存放的主要是类的Class对象,如果一个类被频繁的加载,也可能会导致Perm区满
- Perm区的垃圾回收也是由Full GC触发的
建议
Sun对堆中不同代的大小也给出了建议,一半建议Young区的大小为整个堆的1/4,而Young区中Survivor区一半设置为整个Young区的1/8