news 2026/4/15 20:39:52

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

作者头像

张小明

前端开发工程师

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

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

1.标记-清除算法

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

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

2.复制算法

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

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

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

3.标记-整理算法

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

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

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

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

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

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

在RabbitMQ中,怎么确保消息不会丢失?

为了确保消息不会丢失,可以从以下3个方面解决: 1.在创建队列的时候设置durable为true,发布消息的时候设置delivery为2,从而确保队列和消息都是持久的。 这样,就算是RabbitMQ服务器重启也不会造成消息的丢失。 2.开启发…

作者头像 李华
网站建设 2026/4/15 3:01:54

两个链表的第一个公共结点

求解代码 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {// 初始化两个临时指针,分别指向两个链表的头节点ListNode temp1 pHead1;ListNode temp2 pHead2;// 只要两个指针不指向同一个节点,就继续遍历while (temp1 ! temp2…

作者头像 李华
网站建设 2026/4/10 7:04:12

二分搜索树的特性

二分搜索树的特性 引言 二分搜索树(Binary Search Tree,BST)是一种常见的树形数据结构,在计算机科学中有着广泛的应用。它是一种特殊的二叉树,具有以下特性:每个节点都有一个键值,左子树中的所有键值都小于该节点的键值,右子树中的所有键值都大于该节点的键值。本文将…

作者头像 李华
网站建设 2026/4/14 20:43:44

SpringBoot 实现任意文件在线预览功能

一 文件在线预览在现代工作与生活环境中,文件共享与查看已经成为日常不可或缺的一部分。不过传统的文件处理方式要求用户下载文件到本地后才能查看,这不仅占用了设备的存储空间,还可能导致文件传播效率低下,甚至存在安全隐患。因此…

作者头像 李华