网站首页 > java教程 正文
jvm内存是有限的,每当内存快满的时候,就需要腾出来一些空间存放新创建的对象。
打个比方,这些算法像是图书馆的管理员,在内存中的对象就像书架上的书,图书管理员采用某种方式整理图书,每当顾客买走一些书,图书管理员就要重新整理书架,腾出地方放新书。
java自带了三种算法来实现垃圾回收。
gc之标记清除算法
分为两步
1.标记
根据GC Root(gc root指向的对象都是有用的,即不可回收的,如图中蓝紫色的块是不可回收的),灰色的块没有被指向,这些对象被标记成可以回收的,如图中灰色的方块。
2.清除
将标记后的灰色方块清空,即图中灰色清空,变成白色
gc之标记整理算法
分为两步
1.标记
也是和上边一样,标记需要回收的地址
2.整理
将不可回收的对象存放在一起
gc之复制算法
分为两步
1.标记
标记那些不需要回收的对象(注意,这里是不需要回收的对象)
2.复制
首先说明:堆中新生代分为伊甸园区、幸存者0区(也叫From区)、幸存者1区(也叫To区)。
对象会先存在From区,当触发垃圾回收,From区中的数据会复制到To区,并且,原来的From区,变成现在的To区,原来的To区变成现在的From区
总结:
1.标记清除算法,就像顾客从书架上买走一些书,书架上就空出一个一个空格
2.标记整理算法,就像图书管理员把这些书整理整理放到一起
3.复制算法,就像图书管理员将这些书全都搬到另一个书架上
结尾:欢迎在下方留言,如有问题,必回复,不信你试试(嘻嘻)
猜你喜欢
- 2025-05-08 Java虚拟机垃 圾回收算法大揭秘(java虚拟机中的自动垃圾回收机阻止程序运行溢出内存)
- 2025-05-08 Java实现KMP 算法(java实现kmp算法的工具类)
- 2025-05-08 Java编程与算法工程师的数学基础:一场数据的奇幻之旅
- 2025-05-08 Java程序员必看:面试官最爱问的那些算法题
- 2025-05-08 Java工程师面试必备|算法Top30高频真题详解
- 2025-05-08 Java程序员必备算法:从排序到搜索的全方位指南
- 2025-05-08 Java面试中常见的算法题及其优雅解法
你 发表评论:
欢迎- 05-08Hive-数据类型(hive数据类型和文件格式)
- 05-08SpringBoot系列Mybatis之ResultMap、ResultType返回结果使用姿势
- 05-08Linux shell变量&运算符(shell 命令中使用变量)
- 05-08详解Xss 及SpringBoot 防范Xss攻击(附全部代码)
- 05-08MyBatis-Plus码之重器 lambda 表达式使用指南,开发效率瞬间提升80%
- 05-08linux运维中特殊符号的应用与实践
- 05-08深入理解JAVA I/O系列一:File(java.io.fileinputstream)
- 05-08探索Java世界的新天地:JDK最新特性解读
- 最近发表
-
- Hive-数据类型(hive数据类型和文件格式)
- SpringBoot系列Mybatis之ResultMap、ResultType返回结果使用姿势
- Linux shell变量&运算符(shell 命令中使用变量)
- 详解Xss 及SpringBoot 防范Xss攻击(附全部代码)
- MyBatis-Plus码之重器 lambda 表达式使用指南,开发效率瞬间提升80%
- linux运维中特殊符号的应用与实践
- 深入理解JAVA I/O系列一:File(java.io.fileinputstream)
- 探索Java世界的新天地:JDK最新特性解读
- Java 15 新特性:文本块(java纯文本)
- 贼好用的 Java 工具类库(java常用工具包)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)