我已经阅读了大量关于
Java SE 6和7的HotSpot GC的文档.在谈到获得自由记忆的连续区域的策略时,提出了两种“竞争”方法:疏散方法(通常应用于年轻人) ),活动对象从’从’复制到空’到’和压缩(CMS的后退),其中活动对象移动到碎片区域内的一侧,形成一个连续的未使用的块记忆.
两种方法都与“实时集”的大小成比例.不同之处在于疏散需要x2倍的空间,而实际集合则不需要压缩.
为什么我们需要撤离技术呢?需要完成的复制量是相同的,但是它需要保留更多的堆大小,并且不允许更快地重新映射引用.
是的:疏散可以并行执行(其中 – 压缩不能,或者至少不那么容易),但这种特性从未被提及过,并且看起来并不那么重要(考虑到重新映射比移动要昂贵得多).