垃圾回收算法
1.标记清除法
分为两个阶段:标记和清除
标记阶段:标记所有需要回收的对象
清除阶段:回收被标记对象所占用的空间
缺点:内存碎片化严重
2.复制算法
将内存容量分为两块,每次只用其中一块
当一块内存满了将还存活的对象复制到另一块上,把已有的内存清理掉
缺点:可用内存被压缩为原来的一半;存活对象较多时,复制算法的效率降低
3.标记整理算法
标记需要回收的对象
将存活的对象移到内存的一端
清除边界外的对象
4.分代收集算法
新生代
-
新生代每次垃圾回收时,大量垃圾被回收
-
新生代占整个内存区域的三分之一,按照8:1:1分为三块:Eden区、Survivor From区、Survivor To区
-
每次只使用Eden区和其中一块Survivor区,当垃圾回收时,将两块空间中还存活的对象复制到另一块Survivor区中,存活的对象年龄+1
-
当Survivor区中对象的年龄达到15时,将该对象移动到老年代内存区
-
如果Survivor区放不下存活的对象,则存放到老年代内存区
老年代
- 老年代每次垃圾回收时,只有少量垃圾被回收
- 采用标记整理算法
- 在进行Major GC之前一般会进行一次Minor GC