JVM学习(一)判断对象是否可回收和回收算法

2018-08-03  本文已影响5人  lunabird

一、对象已死吗?

二、垃圾收集算法

1.标记-清除算法

最基础,后续的算法都是基于这种思路。
不足:(1)效率不高;(2)造成内存碎片;


image.png

2、复制算法

可用内存容量分为大小相同的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另一块上面。


image.png

现代商业虚拟机都采用这种收集算法来回收新生代。
一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。HotSpot默认的Eden和survivor比例是8:1.
如果另外一块Survivor空间没有足够的空间存放上一次新生代手机下来的存活对象时,这些对象直接通过分配担保机制进入老年代。

3、标记-整理算法

适用于老年代。
让所有存货对象都向一端移动,然后直接清理掉端边界以外的内存。


image.png

4、分代收集算法

就是给内存分成了新生代和老年代,给新生代用的复制算法,给老年代用的标记-清除或者标记-整理算法。

上一篇下一篇

猜你喜欢

热点阅读