垃圾回收算法

目录

标记-清除算法

标记阶段

清除阶段

复制算法

标记-整理算法

标记阶段

整理阶段


标记-清除算法

分为标记阶段和清除阶段

标记阶段

遍历所有的 GCRoots 标记所有存活对象

清除阶段

清除所有未被标记的对象,清除后内存不连续,产生内存碎片,需要维护空闲列表,在分配大对象或者大数组对象时,可能没有连续的内存空间进行存放

复制算法

将内存分为两块,同一时刻只使用其中的一块内存,垃圾收集时,将存活对象复制到另一块区域,然后将垃圾对象统一清理。会浪费一部分内存,适用于对象存活率较低的场景

标记-整理算法

分为标记阶段和整理阶段

标记阶段

同样的,遍历所有 GCRoots 标记所有存活对象

整理阶段

把存活对象移动到内存的一端,然后对存活对象边界之外的内存进行统一回收。适用于垃圾收集次数不频繁,对象存活率较高的场景

相关推荐
qq_372154232 小时前
Python中如何快速创建全零数组_使用NumPy的zeros函数初始化内存
jvm·数据库·python
2301_796588502 小时前
Tailwind CSS如何快速实现居中对齐_使用mx-auto类实现CSS块级居中
jvm·数据库·python
forEverPlume2 小时前
Go语言如何防SQL注入_Go语言SQL注入防护教程【精选】
jvm·数据库·python
m0_617881422 小时前
mysql升级后日志文件如何处理_mysql日志迁移说明
jvm·数据库·python
baidu_340998822 小时前
JavaScript中类的装饰器提案在属性与方法上的应用
jvm·数据库·python
weixin_381288182 小时前
mysql如何配置多实例运行环境_单机部署多个数据库服务
jvm·数据库·python
m0_734949792 小时前
PHP怎么使用Eloquent Attribute Synthesis属性合成_Laravel多源数据融合【指南】
jvm·数据库·python
qq_372906932 小时前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
2401_882273722 小时前
CSS 背景色无法撑满父容器?解决浮动导致的高度塌陷问题
jvm·数据库·python