网站首页 > 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面试中常见的算法题及其优雅解法
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)