Schema标记与垃圾内容识别共存下的实施路径

简述 垃圾回收算法(上)

垃圾回收算法主要包括标记-清除算法、标记-压缩算法和标记-复制算法,以下是对这几种算法的详细介绍:标记-清除算法定义:最基础且易实现的垃圾回收算法,分为标记和清除两个步骤。标记:标记出需要被回收的对象。清除:将被标记的对象进行回收。优点:实现简单。缺点:效率低:标记和清除需要经历两轮遍历。产生碎片空间:清除垃圾后会产生大量不连续的碎片空间。这会导致在分配较大空间时,可能找不到连续的足够空间,从而不得不触发一次垃圾回收。过程图示:标记-压缩算法定义:针对标记-清除算法产生大量不连续碎片空间的缺点进行优化改进,在标记-清除的中间添加压缩操作,对存活对象进行整理,目的是整合空间。压缩:将所有存活的对象都移动到一端。但对象之间基本存在引用,压缩前需要先计算每个存活对象的新地址,避免压缩过程中出现覆盖存活对象的情况。优点:解决了标记-清除算法会产生碎片空间的问题。缺点:压缩需要移动存活对象到一端,且要保证移动位置不会覆盖存活对象,必须通过计算找到合适位置,产生额外开销。过程图示:标记-复制算法定义:同样针对标记-清除算法产生大量不连续碎片空间的缺点,将内存空间分为两块区域,两块区域交替使用,实际投入使用的只有其中一块区域(即总空间的一半)。当空间不足需要垃圾回收时,将存活对象复制到另一块区域的一端后,直接清空当前区域的空间。优点:相对标记-压缩算法,不需要对存活对象进行多次遍历计算新地址,直接复制到另一个区域即可。缺点:空间利用率低:只能使用一半的内存空间。效率下降:当存活对象较多时,需要进行大量复制操作。过程图示:


nginx