21.JVM的垃圾回收算法

JVM的垃圾回收算法主要有三种:

一、标记-清除算法

1.概念

标记-清除算法分为两个阶段:

a.标记阶段:会遍历所有的对象,标记出需要回收的对象。

b.清除阶段:会再次遍历所有的对象,回收被标记了的对象。

2.缺点

a.执行效率不稳定:如果Java堆中有大量的对象,而且其中大部分需要被回收。那么就会导致标记和清除两个阶段的执行效率因为对象数量的增加而不断降低。

b.标记和清除之后会产生大量不连续的内存碎片,导致内存空间的浪费。


二、复制算法

1.概念

复制算法是将可用的内存空间划分为大小相等的两块区域,每次只使用其中的一块区域。当这块区域用完了,就将还存活的对象复制到另一块区域,然后把使用过的这一块内存区域一次性清理掉。

2.缺点

也会有一部分内存空间没有使用,存在空间的浪费。


三、标记-整理算法

1.概念

标记-整理算法是在标记-清除算法的基础上进行改进,它的标记阶段与标记-清除算法一样,但后续不是直接清除可回收对象。而是将所有存活的对象移动到内存空间的一端,然后直接清理掉边界以外的内存空间。(移动存活对象需要STW( Stop The World)才能进行)

2.STW

进行垃圾回收过程中会涉及对象的移动,那么为了保证对象引用更新的正确性,必须暂停所有的用户线程。这样的停顿,被描述为STW( Stop The World)。


相关推荐
jikiecui7 分钟前
信奥崔老师:实数型: float、double
c++·算法
知花实央l27 分钟前
【数字逻辑】数字逻辑实验实战:74HC151实现逻辑函数+74HC138搭全加器(附接线步骤+避坑指南)
算法·容器·测试用例·逻辑回归
CoovallyAIHub29 分钟前
突破性开源模型DepthLM问世:视觉语言模型首次实现精准三维空间理解
深度学习·算法·计算机视觉
WaWaJie_Ngen1 小时前
【OpenGL】模板测试(StencilTest)
c++·算法·游戏·游戏引擎·游戏程序·图形渲染
Yuroo zhou1 小时前
破空驭风,智领未来 --5KG物流配送无人机展示飞行!
人工智能·算法·机器人·硬件工程·无人机
CoovallyAIHub1 小时前
ICCV 2025 最佳论文出炉:CMU 团队用「AI 积木大师」BrickGPT 摘得桂冠!
深度学习·算法·计算机视觉
喜欢吃燃面1 小时前
算法中的链表结构
开发语言·c++·学习·算法
Juan_20122 小时前
P1041题解
c++·算法·题解·搜索
晨非辰2 小时前
【数据结构入坑指南】--《层序分明:堆的实现、排序与TOP-K问题一站式攻克(源码实战)》
c语言·开发语言·数据结构·算法·面试
hansang_IR2 小时前
【题解】P2217 [HAOI2007] 分割矩阵 [记忆化搜索]
c++·数学·算法·记忆化搜索·深搜