概述
分代垃圾回收并不是一个新的算法, 而是将之前的回收算法结合利用, 分场景使用.
简单来说, 分代垃圾回收的思路, 就是给每个对象都分配一个年龄, 年龄越大的, 活的越久, 被回收的概率就越小....分代垃圾回收就是利用这个现象, 将堆分为了新生代和老年代, 新生代的对象大部分会马上变成垃圾, 而新生代经历过几次回收后, 对象就会晋升到老年代中. 老年代中的对象不会经常回收....然后, 就可以针对不同分代, 利用针对性的GC算法.
实现
还记得之前的标记复制算法么? 将堆进行二等分. 在分代回收中, 也将堆进行分块, 分为新生代堆以及老年代堆....针对新生代: 利用复制算法, 避免了内存碎片化, 同时分配内存更快速(因为新生代就是会频繁的申请内存). 同时将年龄大的对象加到老年代中....当然也不只有新生和老年两代, 也可以有多代.
----
针对分代垃圾回收就简单说一下, 因为JVM用的就是它, 网上一找一大把, 简直太多了.