1.Java将堆区分为了新生代和老年代。新生代又分为了Eden区、Survivor区。老年代存放着经历多次GC仍然存活的对象。2.分代的唯一的理由就是优化GC性能。如果没有分代,那么所有的对象都放在一起,GC的时候需要找到哪些对象没用,这样需要对整个堆区进行扫描,而许多对象都是朝生夕死的,如果分代的话,把新创建的对象放到某一个地方,当GC的时候先把这块“朝生夕死”对象的区域进行回收,就能够腾出很大的空间出来。
Eden
Survivor
GC