深入java虚拟机第9章, 垃圾收集(3)火车算法

大范围的垃圾收集会占用大量的资源和时间,可能会导致暂停和无法满足实时系统的要求。因此,使用渐进式的收集算法。

火车算法是为了在成熟对象空间提供限度时间的渐进收集。

 

车厢,火车和火车站

火车算法把成熟对象空间划分为固定长度的内存块,算法每次在一个块中单独执行。每个块属于一个集合。

块被叫车厢,集合被叫做火车,成熟对象空间是火车站。

火车被排序,块被附加到火车的尾部。

 

这种方式表示出了成熟对象空间内所有块的总体排序。

 

车厢收集

火车算法执行的时候,要么收集最小数字火车中的最小数字车厢,要么收集整个最小数字火车。

如果整个火车都是垃圾对象,那么整个火车都被收集。否则,收集最小数字车厢。

收集最小数字车厢时,如果发现该车厢内部有被其他车厢引用对象则会转移到引用的车厢,如此循环,最后收集整个车厢。

收集最小数字火车时,如果发现该火车内有被其他火车引用对象则会转移到引用的火车,如此循环,最后收集整个火车。

 

 

 

 

记忆集合和流行对象

为了促进收集过程,火车算法使用了记忆集合。一个记忆集合是一个数据结构,包含所有对一节车厢或者一列火车的外部引用。一个空的记忆集合表明车厢或者火车中的对象都不再被车厢或者火车外的任何变量引用,可以被垃圾收集。

 

 

 

 

你可能感兴趣的:(java,数据结构,虚拟机,算法)