JVM001--有哪些垃圾回收算法
2021/11/18 11:10:33
本文主要是介绍JVM001--有哪些垃圾回收算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、标记-清除(Mark-Sweep)算法
标记-清除算法分为两个阶段:标记阶段、清除阶段。
在标记阶段,会标记出所有需要回收的对象,标记完成后,统一回收所有被标记的对象。
缺点:
(1)效率问题,标记和清除阶段效率都不高。
(2)空间问题,会产生大量的不连续的内存碎片,不利于分配较大的对象。
2、复制算法
复制算法将内存按容量划分为大小相等的两块,每次只使用其中一块。当前使用的这一半空间快用完的时候,将还存活的对象复制到另一半上面,过期的对象不会复制,直接被清除。这种方法效率比标记清除算法高,并且也不会出现内存碎片。
缺点:
空间利用率低,内存少了一半。
为解决这个问题,HotSpot虚拟机采用了更加合理的划分方式:
将内存分为较大的一块Eden空间,和两块较小的Survivor空间,比例为8:1:1。这种分配方式,只有10%的空间被浪费。
3、标记-整理算法
标记-整理算法一般用于老年代,它也分为两个过程,标记阶段将过期的内存进行标记,接下来的整理阶段,是将存活的内存向一端移动,然后清除端边界以外的内存。
缺点:
效率比较低,整理过程需要复制和移动,比较耗时。
4、分代收集算法
当前商业虚拟机都采用分代收集算法,根据对象存活周期的不同将内存划分为几块。一般是把java堆分为新生代和老年代,这样就可以根据各个年代的特点,采用最合适的收集算法。
新生代:复制算法
老年代:标记-清除/标记-整理。
这篇关于JVM001--有哪些垃圾回收算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南