有哪些高效的常见垃圾回收处理方式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1496个文字,预计阅读时间需要6分钟。
1. 标记清除法(Mark and Sweep)第一步:从根节点出发,遍历全局,标记所有可达对象。第二步:清除所有未标记的对象。优点:方法简单,速度快。缺点:容易产生内存碎片。
1、标记清除法(Mark And Sweep)
第一步:从根部出发,遍历全局,然后对所有可达的对象进行标记
第二步:对所有未标记的对象进行清除
优点:方法简单,速度较快。缺点:容易产生较多的内存碎片。
采用这种方式的语言:lua等
2、标记整理回收(mark-compact)
第一步和标记清除法一样,标记所有可达对象
第二步将未标记的对象清除,同时将现有对象的空间合并
优点:没有内存碎片。缺点:合并空间的时候,引用该对象的所有线程都会被挂起,合并完成后才会重新执行。
采用这种方式的语言:c#等
3、标记复制回收(mark-copy)
复制算法开辟了两个相等的空间,每次只使用其中的一块空间
第一步标记
第二步将所有标记过的对象,复制到另一块空间,当复制完成后,指向原有对象的指针指向新的对象。全部复制完成后,释放原有的空间。
本文共计1496个文字,预计阅读时间需要6分钟。
1. 标记清除法(Mark and Sweep)第一步:从根节点出发,遍历全局,标记所有可达对象。第二步:清除所有未标记的对象。优点:方法简单,速度快。缺点:容易产生内存碎片。
1、标记清除法(Mark And Sweep)
第一步:从根部出发,遍历全局,然后对所有可达的对象进行标记
第二步:对所有未标记的对象进行清除
优点:方法简单,速度较快。缺点:容易产生较多的内存碎片。
采用这种方式的语言:lua等
2、标记整理回收(mark-compact)
第一步和标记清除法一样,标记所有可达对象
第二步将未标记的对象清除,同时将现有对象的空间合并
优点:没有内存碎片。缺点:合并空间的时候,引用该对象的所有线程都会被挂起,合并完成后才会重新执行。
采用这种方式的语言:c#等
3、标记复制回收(mark-copy)
复制算法开辟了两个相等的空间,每次只使用其中的一块空间
第一步标记
第二步将所有标记过的对象,复制到另一块空间,当复制完成后,指向原有对象的指针指向新的对象。全部复制完成后,释放原有的空间。

