标记-清除算法(Mark-Sweep)的原理介绍和缺点

标记-清除算法(Mark-Sweep)是一种非常基础和常见的垃圾收集算法,简单的说,它们找出所有不可达的对象,并将它们放入空闲列表Free,该算法被J.McCarthy等人在1960年提出并并应用于Lisp语言。

标记-清除算法分为两个阶段,标注和清除。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。如图

标记清除算法

从图中我们就可以发现,该算法最大的问题是内存碎片化严重,后续可能发生大对象不能找到可利用空间的问题。

缺点

·效率不算高

·在进行GC的时候,需要停止整个应用程序,导致用户体验差

·这种方式清理出来的空闲内存是不连续的,产生内存碎片。需要维护一个空闲列表。

猜你喜欢:

传智教育Java基础进阶教程

JSP作用域有几个?JSP作用域详解

什么是线程安全?如何理解线程安全?

高级Java软件开发工程师课程

课程获取【Java视频教程+资料】加播妞1605146928606_课程资料.jpg:435946716。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/253787.html

(0)
上一篇 2022年5月8日
下一篇 2022年5月8日

相关推荐

发表回复

登录后才能评论