JVM(四) 垃圾收集算法

JVM(四) 垃圾收集算法

写前面几章节主要是为后面垃圾回收器优化做铺垫

经典的垃圾回收算法以下几种

一、标记--清除算法(Mark-Sweep)

图示:

回收前状态:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

回收后状态:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

优缺点:

       算法执行分为两个阶段标记与清除,所有的回收算法,基本都

基于标记回收算法做了深度优化

缺点:效率问题,内存空间碎片(不连续的空间)

二、复制算法(Copying)

图示:

回收前状态:

Eden内存空间 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Survivor1空间(From空间)1

 

 

 

 

 

 

 

 

 

 

 

 

Survivor2空间(To空间) 1

 

 

 

 

 

 

 

 

 

 

 

 

Eden内存空间与Survivor空间 8:1



 

回收后状态:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Survivor1空间(From空间)1

 

 

 

 

 

 

 

 

 

 

 

 

Survivor2空间(To空间) 1

 

 

 

 

 

 

 

 

 

 

 

 

Eden内存空间与Survivor空间 8:1



 

 

优缺点:

         比较标记清除算法,避免了回收造成的内存碎片问题,

缺点:以局部的内存空间牺牲为代价,不过空间的浪费比较小,默认8:1的比例1是浪费的。

复制也有一定的效率与空间成本

三、标记整理算法(Mark-Compact)

图示:

回收前状态:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

回收后状态:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

优缺点:

避免了,空间的浪费,与内存碎片问题。

缺点:整理时复制有效率成本。

猜你喜欢

转载自caizhaohua.iteye.com/blog/2378953
今日推荐