垃圾回收机制
最编程
2024-10-18 11:26:51
...
1. 分代收集
- 分代收集(Generational Collector)算法就是其中一种针对
GC
性能优化算法,将堆内存划分为新生代、老年代。 - 在分代收集算法中,对象的存储具有以下特点:
- 对象优先在 Eden 区分配。
- 大对象直接进入老年代。
- 长期存活的对象将进入老年代,默认为 15 岁。
-
基本概念:
- 对象的生命周期:每经历一次GC,对象年龄 + 1。
- 伊甸区:是对象诞生的地方。经过经验的推算,大部分对象的生命基本活不过1岁。
- 生存区:活过了1岁,但大部分也活不到成年15岁。这些对象每经历一次 GC,会在 SA 和 SB 之间反复横跳。
- 老年区:极少数成年的对象 或者 大对象会被一开始放在这儿。
2. 标记复制
- 按内存容量将内存划分为等大小的两块。每次只使用其中一块,当这一块内存满后将尚存活的对象复制到另一块上去,把已使用的内存清掉。
- 虽然实现简单,内存效率高,不易产生碎片,但是最大的问题是可用内存被压缩到了原本的一半。且存活对象增多的话,Copying算法的效率会大大降低。
3. 标记清除
- 分为两个阶段:标注和清除。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。
- 最大的问题是内存碎片化严重,后续可能发生大对象不能找到可利用空间的问题。
4. 标记压缩(整理)
标记后不是清理对象,而是将存活对象移向内存的一端。然后清除端边界外的对象。
推荐阅读
-
垃圾回收机制
-
MapReduce 工作机制和源代码分析-2.ReduceTask 工作机制
-
GaussDB(适用于 MySQL)流量控制机制的技术说明 - 文章结尾
-
JVM] - 深入了解 G1 回收器 - 回收流程详解
-
[模型] 在编码器-解码器模型中引入注意机制
-
深入了解 Java 中的 ThreadLocal 机制,了解其工作原理、优缺点分析、数据库连接管理的应用、使用注意事项
-
5 分钟了解 docker 的 Swarm 机制
-
论文阅读笔记--序列到序列学习中的复制机制-前言
-
YOLO11 的改进 |注意机制 |矩形自校准模块 RCM 介绍
-
Java_EE]Day04 MyBatis 中的关联映射和缓存机制