垃圾回收算法

目录

标记-清除算法

标记阶段

清除阶段

复制算法

标记-整理算法

标记阶段

整理阶段


标记-清除算法

分为标记阶段和清除阶段

标记阶段

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

清除阶段

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

复制算法

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

标记-整理算法

分为标记阶段和整理阶段

标记阶段

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

整理阶段

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

相关推荐
CLX050536 分钟前
CSS如何制作响应式图片集布局_利用object-fit填充空间
jvm·数据库·python
2303_821287381 小时前
SQL如何进行分组后字符串拼接_使用GROUP_CONCAT或STRING_AGG
jvm·数据库·python
weixin_459753941 小时前
CSS文本渲染在不同操作系统差异_使用font-smoothing平滑化
jvm·数据库·python
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第58题】【JVM篇】第18题:讲一下三色标记
java·开发语言·jvm
2401_824697661 小时前
mysql添加索引导致插入变慢怎么办_索引优化与异步处理方案
jvm·数据库·python
2401_824697661 小时前
Go语言如何写负载均衡器_Go语言负载均衡器实战教程【完整】
jvm·数据库·python
m0_733565461 小时前
CSS如何快速微调项目的间距大小_使用CSS变量批量修改值
jvm·数据库·python
woxihuan1234562 小时前
如何为禁用按钮添加点击提示信息
jvm·数据库·python
ㄟ留恋さ寂寞2 小时前
Golang怎么限制请求Body大小_Golang如何防止客户端发送过大的请求体【避坑】
jvm·数据库·python
老纪2 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python