1.标记-清除算法 标记-清除算法对根集合进行扫描,对存活的对象进行标记。标记完成后,再对整个空间内未被标记的对象扫描,进行回收。 优点: 实现简单,不需要进行对象进行移动。 缺点: 标记、清除过程效率低,产生大量不连续的内存碎片,提高了垃圾回收的频率。 2.复制算法 这种收集算法解决了标记清除算法存在的效率问题。它将内存区域划分成相同的两个内存块。每次仅使用一半的空间,
JVM
生成的新对象放在一半空间中。当一半空间用完时进行GC
,把可到达对象复制到另一半空间,然后把使用过的内存空间一次清理掉。 优点: 按顺序分配内存即可,实现简单、运行高效,不用考虑内存碎片。 缺点: 可用的内存大小缩小为原来的一半,对象存活率高时会频繁进行复制。 3.标记-整理算法 标记-整理算法 采用和 标记-清除算法 一样的方式进行对象的标记,但后续不直接对可回收对象进行清理,而是将所有的存活对象往一端空闲空间移动,然后清理掉端边界以外的内存空间。 -优点: 解决了标记-清理算法存在的内存碎片问题。 缺点: 仍需要进行局部对象移动,一定程度上降低了效率。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!