垃圾回收算法

垃圾回收算法

**标记-清除算法:**在标记阶段标记所有从根节点出来的对象,未被标记的对象就是被引用的对象,在清除阶段就清除那些没有被标记的对象。 缺点:要遍历对象两次 效率低容易产生内存碎片,使内存碎片化

**复制算法:**分左右两个内存空间,左边有对象,右边空的。将左边对象复制到另外右边内存中,将垃圾对象回收,将左空间清空,再将已经回收过垃圾的右空间复制过去,进行垃圾回收。 缺点:需要一块空的内存空间,需要移动的对象

**标记整理算法:**标记的都是存活对象,复制算法将存活对象复制到另外一块内存上然后清除之前使用的内存,而整理算法是移动存活的对象到一端,然后清除边界以外的内存。缺点:需要有移动的内存空间

**分代回收算法:**是目前虚拟机使用的回收算法,用于整理新生代,老年代和永久代,它们在内存之中的比重是8:1:1将多次没有被清除的对象移到老年代中,清除新生代中内容,在将老年代中一直清除不了的移到永久代中

如何确认JVM中的垃圾:

标记-清除算法:标记阶段标记所有从根节点出来的对象,未被标记的对象就是需要清除的垃圾

可达性分析算法:对象可达指的就是:双方存在直接或间接的引用关系。遍历对象图,

相关推荐
weixin_444012935 小时前
c++如何将std--vector直接DUMP到二进制文件_指针地址直写【附代码】
jvm·数据库·python
woxihuan1234565 小时前
Go语言中--=运算符详解:位右移赋值操作的原理与应用
jvm·数据库·python
m0_690825826 小时前
如何备份被破坏的数据表_强制跳过错误的导出尝试
jvm·数据库·python
m0_733565466 小时前
JavaScript中Reflect-ownKeys获取所有键名的优势
jvm·数据库·python
2301_815901977 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
m0_463672207 小时前
SQL优化SQL关联查询中的排序字段_减少临时空间占用与内存开销
jvm·数据库·python
iuvtsrt8 小时前
存储过程如何处理海量数据的批处理_循环提交与分段LIMIT结合
jvm·数据库·python
yexuhgu8 小时前
SQL如何检查字符串是否存在:INSTR与LOCATE函数使用
jvm·数据库·python
2301_783848658 小时前
SQL如何用SQL子查询实现关联报表生成_嵌套逻辑关联多表
jvm·数据库·python
2501_901006479 小时前
Golang怎么用gRPC Gateway_Golang gRPC Gateway教程【经典】
jvm·数据库·python