常用的垃圾回收器

article/2025/7/1 18:21:58

1、常见的垃圾回收器介绍:
在这里插入图片描述
如果说收集算法是内存回收的⽅法论,那么垃圾收集器就是内存回收的具体实现。现在为⽌还没有最好的垃圾收集器出现,更加没有万能的垃圾收集器,我们能做的就是根据具体应⽤场景选择适合⾃⼰的垃圾收集器。
(1)serial 收集器(串行)
单线程收集器,"单线程"的意义不仅仅意味着使用一条垃圾收集线程去完成垃圾收集工作,更重要的是在进行垃圾收集工作的时候必须要停掉其它的工作线程(stop the world)直到它收集结束。(新生代采用 复制算法,老年代采用 标记-整理算法 )
优点:简单高效,不需要进行线程交互

(2)ParNew 收集器(吞吐量优先)
其实就是serial收集器的多线程版本,除了使用多线程进行垃圾收集以外,其余行为(控制参数,收集算法,回收策略等)和serial收集器都是一样的。(新生代采用 复制算法,老年代采用 标记-整理算法 )
适用:
堆内存较大,多核CPU。让单位时间内,STW的占比最小

(3) CMS 收集器(响应时间优先)
CMS(Concurrent Mark Sweep)收集器是⼀种以获取最短回收停顿时间为⽬标的收集器。它⾮常符合在注重⽤户体验的应⽤上使⽤。第⼀次实现了让垃圾收集线程与⽤户线程(基本上)同时⼯作。(采用 标记-清除 算法 )
工作步骤:
a 初始标记:暂停所有的其他线程,并记录下直接与 root 相连的对象,速度很快 ;
b 并发标记:同时开始GC和用户线程⽤⼀个闭包结构去记录可达对象。但在这个阶段结束,这个闭包结构并不能保证包含当前所有的可达对象。因为⽤户线程可能会不断的更新引⽤域,所以GC 线程⽆法保证可达性分析的实时性。所以这个算法⾥会跟踪记录这些发⽣引⽤更新的地⽅。
c 重新标记:重新标记阶段就是为了修正并发标记期间因为⽤户程序继续运⾏⽽导致标记产⽣变动的那⼀部分对象的标记记录,这个阶段的停顿时间⼀般会⽐初始标记阶段的时间稍⻓,远远⽐并发标记阶段时间短
d 并发清除:开启用户线程,同时GC线程开始对未标记的区域进行清扫
适用:
堆内存较大,多核CPU。STW的时间最少

(4)G1 收集器
G1 (Garbage-First) 是⼀款⾯向服务器的垃圾收集器,主要针对配备多颗处理器及⼤容量内存的机器. 以极⾼概率满⾜ GC 停顿时间要求的同时,还具备⾼吞吐量性能特征。
特点:
a 并行与并发,利用多核环境的特点,充分利用cpu,使用多个cpu来减少STW的时间。G1收集器通过办法方式在GC的同时运行用户线程。
b 分代收集,虽然G1不需要其它的收集器配合就能管理整个的GC堆,但是还是保留了分代的概念。
c 空间的整合,G1采用的 标记-整理算法,(从局部上来看是基于复制算法实现)。不同于CMS的 标记-清除算法。
d 可预测的停顿,CMS和G1都关注于减低停顿时间,G1的最大特点就是能建立可预测的停顿时间的模型,能让使用者明确指定在一个长度为M毫秒的时间片段内。

工作步骤:
a 初始标记
b 并发标记
c 最终标记
d 筛选回收
(G1收集器后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的块,这也就是Garbage-First的由来),这种Region划分内存空间,以及有优先级的区域回收方式,保证了G1收集器能在有限时间内尽到最可能大的效率。

http://chatgpt.dhexx.cn/article/hx7vfG6y.shtml

相关文章

Java 捡垃圾利器

文章目录 垃圾收集器Serial优点使用场景 ParNew使用场景配合使用CMSG1 Parallel Scavenge使用场景参数 Serial OldParallel OldCMS流程优点缺点 G1概述主要特征内存分布回收定位问题与解决方案与 CMS 小结拓展阅读参考资料 垃圾收集器 收集算法是内存回收的方法论,…

垃圾回收站

【冒泡排序】c实现冒泡排序代码 【冒泡排序】c实现冒泡排序代码 【冒泡排序】c实现冒泡排序代码固态激光雷达 转载自 yangchuang93 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 冒泡排序的基…

labweek8

实验报告 实验内容 进程间通信—消息机制。 (1) 编译运行课件 Lecture 09 例程代码:Algorithms 9-1 ~ 9-2. (2) 修改代码,观察在 msgsnd 和 msgrcv 并发执行情况下消息队列的变化情况。 (3) 仿照 alg.8-4~8-6,编制基于 POSIX API 的进程间…

常见垃圾回收器

CMS和G1是最重要的 新生代一般采用标记复制,老年代一般采用标记整理算法 Serial:垃圾回收线程只有一个,而且垃圾回收线程工作的时候其他用户线程要停下来 Parnew:Serial的多线程版本,有多个垃圾回收线程,垃…

垃圾回收(一)

文章目录 1. 确定哪些对象还“存活”,哪些已经“死去”1.1 引用计数算法1.2 可达性分析算法1.3 引用 2.垃圾回收算法2.1 分代收集理论跨代引用 2.2 标记-清除算法2.3 标记-复制法2.4 标记-整理算法 垃圾收集需要完成的三件事: 哪些内存需要回收&#xff…

python 垃圾箱-垃圾回收

前戏 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值…

纪念第一届cccc天梯赛

来一篇迟到的文章 先来爆一下战绩吧:SDUT,学校排名全国第六获金,山东省冠军。学校一共三支队伍,学长们一支最强的队获一等奖,剩下的两支二等奖。 战绩总体来看还不错吧,离不开我们每一个队员和老师们的努…

2021 CCCC天梯赛补题

前言不想看请直接跳过~~~~ 前言检讨:天梯赛我拉垮了,我拖了队伍后腿,我有罪。 分析原因,首先是前一个星期训练量不够,没有跟上队友训练的进度,一些基础的STL的…

2021年CCCC天梯赛 【部分题题解】

天梯赛有三个level,第一个level基本就是语法题,第二个level是基础算法和STL库的一些应用。 第三个level就是一些难的算法。 L3的题都不是太会,有思路但是写不出来。 目录 L1人与神两小时学完C语言强迫症降价提醒机器人大笨钟的心情吉老师的回…

2021年CCCC天梯赛L3 还原文件题解

题目如下 一份重要文件被撕成两半,其中一半还被送进了碎纸机。 我们将碎纸机里找到的纸条进行编号,如图 1 所示。然后根据断口的折线形状跟没有切碎的半张纸进行匹配,最后还原成图 2 的样子。 要求你输出还原后纸条的正确拼接顺序。 图 1…

2020CCCC天梯赛补题记录

目录 总结补题L2-035 完全二叉树的层序遍历 (25分)L2-036 网红点打卡攻略 (25分)L3-025 那就别担心了 (30分)28分版本:30分版本(记忆化搜索) 总结 1.口罩那题打完就只剩三十分钟了,之后卡在了完全二叉树的层序遍历那题,就没有再敢往后看&…

2021 CCCC天梯赛L1补题

前言 这次天梯赛表现没有达到预期,L1的分没有拿全,L2有2题没考虑完全,总之很愧疚拖了队友后腿。今天先补上L1没拿满分的题。 L1补题 前言L1-078 吉老师的回归输入样例1输出样例1输入样例2输出样例2 思路代码实现 L1-080 乘法口诀数列输入样例…

CCCC天梯赛 L2-037 包装机

CCCC天梯赛 L2-037 包装机 一种自动包装机的结构如图 1 所示。 首先机器中有 N 条轨道,放置了一些物品。 轨道下面有一个筐。 当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。 当 0 号按钮被按下时,机械手…

2022年CCCC天梯赛题解

L1-1今天我要赢 原题链接 代码 #include<bits/stdc.h> #define int long long #define rep(i, a, b) for(int ia;i<b;i) #define Rep(i, a, b) for(int ia;i>b;--i) using namespace std; const int N 10005; inline int read(){int s0,w1;char chgetchar();wh…

第八届cccc团体程序设计天梯赛——个人参赛总结——无代码纯粹的参赛总结

第八届cccc团体程序设计天梯赛——个人参赛总结——无代码纯粹的参赛总结 目录 第八届cccc团体程序设计天梯赛——个人参赛总结——无代码纯粹的参赛总结引言~介绍一下cccc天梯赛&#xff08;选读&#xff09;开篇介绍&#xff08;以下是个人经历部分的分享&#xff09;赛前准备…

怎样合理地营销推广App和吸引住大量的客户提高转化?

开发App进行后&#xff0c;一切应用软件都必须营销推广&#xff0c;尤其是在互联网技术收益消退的情况下&#xff0c;怎样合理地营销推广和吸引住大量的客户总流量早已变成很多互联网公司最关注的难题。 APP运用引流方法工作中看上去很繁杂&#xff0c;难度系数很大&#xff0…

APP在应用市场内该如何做推广

苹果应用商城的自然流量都是通过精品推荐&#xff0c;畅销排行榜和搜索来获取的&#xff0c;此外&#xff0c;应用名称、副标题、应用截图视频、应用描述、用户评论、下载量、用户留存率还有曝光量&#xff0c;这些都是影响ASO优化的关键因素。 为了防止一些应用堆砌热词&…

App推广拉新的6大方式,你都玩得转吗?

中国的互联网发展至今,除了App以外,公众号,小程序在微信生态中的独领风骚,快应用也像“太子”一样在11家国产手机厂商的簇拥下茁壮成长,而百度的百家号、头条的头条号、阿里的大鱼号也已经和微信开始“正面刚”。App这种古老的产品形态,正受到市场的不断冲击。 根据Quest…

什么是App推广技术?

在移动互联网红利消失殆尽、市场竞争日趋激烈的背景下,App的推广越来越难了,如何去有效的进行推广,吸引更多的用户流量,成为了众多互联网企业最为关注的问题。 而App 推广技术指的就是通过一些技术的方式来提高 App 推广效率,帮助众多互联网企业,解决 App 推广难的问题。…

如何正确推广App,实现高转化用户。

个性化深度链接技术的应用。深度链接使网页和App两者串联起来&#xff0c;减少了转换漏斗中的损失。再加上深度链接不仅能改善潜在用户的转化&#xff0c;对沉睡用户的唤醒同样也能发挥关键作用。 类型不含深度链接使用深度链接携带参数首页商品的id号&#xff0c;房间号&…