jvm 垃圾回收——标记清除算法、复制算法、标记整理算法

一、标记清除算法:

 ----------------------------------------------

 ------

 ------------------------------------------------------------------------------------------------------------------------------

二、复制算法:

步骤:

1. 把整个堆内存空间划分为两块:From空间、To空间;每次在对象分配阶段,只能使用From空间

2. 垃圾回收阶段开始时,将GC Root对象搬运到To空间,再将GC Root关联的对象也搬运到To空间

3. 最后,From空间剩下的就是与GCRoot没有关联的对象,也就是需要被回收的对象,所以接下来把From空间清理掉

4. 将两个空间的名字互换

 

 ---------------------------------------------------------------------------------------------------------------------

三、标记整理算法(标记压缩算法):

1. 标记阶段:将所有存活的对象进行标记。Java中使用可达性分析算法,从GC Root对象开始 通过引用链遍历出所有存活对象

2. 整理阶段:将所有存活对象移动到堆的左端,右端里面就是不再使用的对象,把右端清理掉

所以,这个算法是没有产生内存碎片的

 

 

posted @ 2024-11-13 21:33  1stzz1  阅读(52)  评论(0)    收藏  举报