查看原文可点击此处。
这篇文章是讲java的垃圾回收基础,在学习算法时了解过一点。之前只了解到java的GC可以通过标记清除算法回收存储资源,先标识已经失去引用的对象,再清空相应的存储空间。
如果按照常规标记回收会形成存储的空间碎片化,造成许多不连续的空闲存储空间,对于这种方式,java只能记录一个空闲的存储空间地址列表,用于下次存放新的对象。
这篇文章中介绍了另外一种标记清除中的清除方式,清除的空间会被压缩,将未被清理的空间压缩在一起,空闲的存储空间形成连续的存储空间,只用保存空闲存储空间的首地址,这样在给新对象分配地址的时候就可以更加快速和简单。