本文也发表于我的同名独立博客,文章地址为http://tantanit.com/jvm-generational-collection-theory-and-mark-up-algorithms/
什么是分代收集理论
目前大部分的JVM,在针对对象进行垃圾收集时,会将对象熬过垃圾收集的次数,视为对象的年龄。依此将对象至少划分为新生代和老年代这两个代。
分代收集理论的理论基础
分代收集理论基于以下三种假说和经验法则。
弱分代假说
绝大多数对象,在第一次垃圾收集时就会被回收,按照经验法则,这个值高达百分之九十八。
强分代假说
熬过越多次收集过程的对象越难以消亡。
跨代引用假说
该假说认为只会存在很少的跨代引用。因为只要经过一些次数的垃圾收集,即使还存在跨代引用,新生代会变成老年代,跨代引用也就自然消失了,所以跨代引用的数量不会多。在对新生代对象进行收集时,由于可能存在老年代对象引用了该对象,那么,需要找到这些老年代对象。根据跨代引用假说,这些跨代引用的数量不会太多,相比于对老年代进行扫描,在新生代建立一个全局数据结构,记录哪一块老年代内存会存在跨代引用,虽然维护这个数据结构,也需要少量的开销。但仍然显得更加合算。
根据分代理论,新生代的对象很大概率一次垃圾收集就会被回收,