GC分代的基本假设:绝大部分对象的生命周期都很是短暂,存活时间短。算法
“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就能够根据各个年代的特色采用最适当的收集算法指针
在新生代中,每次垃圾收集时都发现有大批对象死去,只有少许存活,那就选用复制算法,只须要付出少许存活对象的复制成本就能够完成收集orm
老年代中由于对象存活率高、没有额外空间对它进行分配担保,就必须使用“标记-清理”或“标记-整理”算法来进行回收。cdn
若是说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现对象