news 2026/2/16 13:32:09

Java中有哪些垃圾回收算法?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中有哪些垃圾回收算法?

Java中的垃圾回收算法主要有3种,分别是标记-清除算法复制算法标记-整理算法

1.标记-清除算法

这种算法的逻辑其实很简单,就是先遍历一遍,把有用的东西都打个勾✅(标记),然后把那些没打勾的垃圾直接扔掉(清除)。

不过,这种算法存在一个缺点,就是会留下内存碎片

2.复制算法

复制算法可以很好地解决内存碎片问题,这种算法是把内存一分为二,平时只用一半。

回收的时候,会把活着的对象全部复制到另一半去,然后把原来的那一半直接清空。

这种算法的优点是快,可以保证没有碎片,但是需轮流着一半的空间不能用,太浪费空间了。

3.标记-整理算法

标记-整理算法是老年代常用的算法。

对老年代的对象,因为存活的时间长,如果采用复制算法,需要复制一大堆,速度太慢;

但是,标记-清除又会产生碎片。

所以,标记-整理算法是先进行标记,然后把所有活着的对象往一端推,再把剩下的空间全部清空。

通过这种方式,既不会产生碎片,也不会浪费掉一半的空间,不过,把所有活着的对象往一端推这个整理的动作会比较耗时。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/13 22:26:55

vivado hls设计总结(十四)

一、高层次综合编码样式 1.c实现的递归是不支持可综合的 2.vivado hls中,使用c的函数模板和类模板可以实现递归函数二、函数 1.顶层函数综合后变为RTL设计的顶层 2.子函数综合变为RTL设计的块 3.顶层函数不能采用静态函数三、函数内联 1.子函数可以通过内联来将其逻…

作者头像 李华
网站建设 2026/2/15 9:04:11

(新卷,200分)- 模拟目录管理功能(Java JS Python C)

(新卷,200分)- 模拟目录管理功能(Java & JS & Python & C)题目描述实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。支持命令:创建目录命令:mkdir 目录名称&#…

作者头像 李华
网站建设 2026/2/9 8:44:13

.NET开发必备:Redis、IoC、AutoMapper实战指南

1.Redis、Ioc、AutoMapper等常用技术在现代 .NET(尤其是 ASP.NET Core)开发中,Redis、IoC(Inversion of Control) 和 AutoMapper 是非常常见且重要的技术/工具。下面分别对它们进行简要介绍,并说明其用途和…

作者头像 李华
网站建设 2026/2/15 13:12:37

从一道前端面试题,谈 JS 对象存储特点和运算符执行顺序

本文大纲今天来看一道前端面试的代码输出题。 面试官提供了一段 Javascript 代码,要求给出这段代码运行后的输出结果。 const obj {a: 0, };obj[1] 0; obj[obj.a] obj.a; const values Object.values(obj); obj[values[1]] obj.a; console.log(obj);先分析这道…

作者头像 李华