JVM 彻底搞懂几种常见的垃圾回收机制|标记清除|标记复制|标记整理
2023-02-18 16:38:04 时间
B站搜索“乐哥聊编程“有本篇文章配套视频 https://www.bilibili.com/video/BV1H24y1C7Tp/
分代收集
为什么会出现分代收集呢,这是由对象存活周期不同决定的。在jvm中有些对象是用完就不需要的(业务对象),有些对象则是长久存留的(如Spring的一些组件),所以我们不可能按照同样的收集方式去处理这些对象,所以jvm就会把这些对象进行区分,将存活不久的对象放在新生代,长期存活的放在老年代,然后分别对新生代和老年代采用不同的收集算法,所以这个就叫分代收集。
标记复制
标记复制算法会将内存空间一分为二,每次只会使用一半,另外一半用来保存下次存活的对象。在进行收集时,它会将存活对象全部复制到另外一半的内存空间,然后再把零碎的垃圾对象全部回收。
为什么标记复制一般用在年轻代?
因为标记复制 复制的是存活对象,存活对象越多,那么复制的效率就越低,但是年轻代存活对象一般比较少,所以非常适合使用标记复制算法。
回收前
回收后
标记清除
分为两个步骤:标记和清除,清除的是垃圾,标记的可以是垃圾也可以是存活对象,要看具体垃圾回收算法实现。
回收前
回收后
存在的问题
会产生空间碎片
标记压缩(整理)
标记压缩是在标记清除后,进行了一次碎片整理的操作,使得碎片空间小时,对象存放在连续的空间中。
回收前
回收后
面试题
为什么会出现分代收集呢?
相关文章
- Java开发如何通过IoT边缘ModuleSDK进行协议转换?
- 0停机迁移Nacos?Java字节码技术来帮忙
- 视频 | ZYNQ开发板深度评测:高性能FPGA和双核ARM的强强联合!
- I²C协议官方标准文档2021最新版本下载
- 国产FPGA开发板上手体验:不足百元,集成ARM硬核处理器!
- 业内首发!感芯MC3172硬实时RISC-V芯片,还用啥RTOS!
- 从汇率转换通用解决方案到可复用设计思想
- 顶流选手专访 - 最具推广价值作品 - 背后故事
- 顶流选手专访 - 最佳展现创意作品 - 背后故事
- 【精华】顶流选手专访-最佳可视化展现作品(冠军)
- 冠军作品背后的故事会是什么呢
- IBM 人力资源综合分析案例
- 世界五百强财务高管数字化战群雄经典案例
- ZebraBI 6.0 发布,更高更快更强大
- DAX 引擎之父揭秘 DAX 引擎内部细节
- 脑图PPT - 让大脑高效流淌内容
- 融合最佳展现创意的企业智慧经营分析看板
- ArcPy将HDF格式栅格文件批量转为TIFF格式
- 用AvaSpec 2048便携式光谱仪测定地物高光谱曲线
- ArcPy依据成像时间分别批量拼接不同时相的遥感影像