分代垃圾回收
人们在众多程序案例中总结出了一个经验:"大部分的对象在生成后,经过调用之后马上就变成了垃圾,很多有对象能活的很久"
分代垃圾回收利用该经验,在对象中导入了"年龄"的概念,经历过一次GC后活下来的对象年龄会增长...1岁
新生代对象和老年代对象
分代垃圾回收中把对象分类成几代,根据不同的代数,使用不同的GC算法,我们把刚生成的对象称为新生代,到达一定年龄后称为老年代
新生代
新生代对象大部分会变成垃圾,我们可以通过只找活动对象的算法...,无需做引用计数
老年代
在新生代对象中活过多次之后,新生代晋升成了老年代对象
由于老年代对象很难成为垃圾,所以我们可以减少对老年代对象执行GC的频率
ungar分代垃圾回收
首先,我们需要将堆空间隔离成...,还得将老年代空间的对象当成根,将老年代引用的对象作为活动对象处理
进入老年代空间
当幸存空间的对象活过一定的年龄之后,将通过GC复制算法,将对象复制到老年代空间当中
记录集
分代垃圾回收的优点就是只将垃圾回收的重点放到新生代对象身上...,以此来缩减GC的时间,但是在上面我们知道,老年代的变量也可能引用到新生代的变量,那就意味着我们需要搜索整个老年代空间的所有对象去找引用,这样就大大的削减了分代垃圾回收的机制
因此,我们通过记录集来记录老年代对象到新生代对象的引用