JAVA中的垃圾回收机制

    技术2022-07-11  94

    垃圾回收

    即吞吐量 = 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间)

    首先判断对象是否存活 , 活的对象进行标记 ,

    然后进行垃圾回收

    1.标记清除算法

    标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标记的对象所占用的空间。

    但是容易产生大量碎片

    2.复制算法

    它将可用内存划分为两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用的内存空间一次清理掉,这样一来就不容易出现内存碎片的问题。

    优点:简单,不易产生碎片

    缺点:可用内存变少,且如果存活对象较多,则复制的效率会大大降低

    3.标记整理算法

    该算法标记阶段和Mark-Sweep一样,但是在完成标记之后,它不是直接清理可回收对象,而是将存活对象都向一端移动,然后清理掉边界以外的内存。

    优点:不易产生碎片,充分利用可用内存空间

    缺点:用户等待时间变长

    4.分代回收算法

    年轻代一般使用复制算法,年老代一般使用标记整理算法

    Processed: 0.011, SQL: 9