垃圾回收器

ops/2024/12/21 20:24:05/

一、垃圾回收器的三种类型

1.串行

  1. 单线程执行:所有的垃圾回收工作都由单个线程完成,即在进行垃圾回收时,应用程序的其他所有线程都会停止。
  2. 简单而高效:由于单线程执行,实现上相对简单,适用于小型或中小型的应用程序。
  3. 停顿时间长:由于垃圾回收时会停止应用程序的所有线程,可能导致较长的停顿时间,不适合对响应时间要求严格的应用。
  4. 适用场景:通常用于开发、测试和小型应用的部署,或者作为学习和理解垃圾回收机制的起点。

开启参数:-XX:+UseSerialGC=Serial+SeriakOld(新时代标记复制,老年代标记整理,两个可以同时进行)

img

2.吞吐量优先

  1. 批量处理:将多个小任务合并成一个大任务进行处理,可以减少每个任务的开销,提高吞吐量。例如,在数据库操作中,批量插入数据通常比逐行插入数据的吞吐量更高。
  2. 增加并行度:通过并行处理多个任务来增加系统的吞吐量。例如,使用线程池来并发处理多个请求。
  3. 高效的资源利用:将任务均匀分布到各个资源单元(如服务器、CPU核心)上,以防止某些资源单元过载,提高整体系统的吞吐量。
  4. 适用场景:吞吐量优先策略适用于那些对响应时间不太敏感但需要处理大量数据或长时间运行的应用,如批处理系统、大数据处理等。

垃圾回收方式于串行相似只是使用了多线程进行处理

img

3.响应时间优先

3.1CMS 流程概述

  1. 初始标记(Initial Mark)
    • 目的:标记根对象(即应用程序可直接访问的对象)。
    • 特点:这一步骤会停顿应用程序的执行(STW,Stop-The-World),因为需要确保在标记期间对象的引用关系是稳定的。
  2. 并发标记(Concurrent Mark)
    • 目的:遍历并标记从根对象可达的所有对象。
    • 特点:此阶段在应用程序运行时进行,即在不暂停应用程序的情况下进行标记工作。垃圾回收线程与应用程序线程并发工作,标记堆中的对象。
  3. 重新标记(Remark)
    • 目的:纠正并发标记阶段期间发生的对象变化(如对象的引用关系变动)。
    • 特点:这一步骤会再次停顿应用程序的执行,以确保准确标记所有可达对象。
  4. 并发清除(Concurrent Sweep)
    • 目的:清除未被标记的垃圾对象,回收堆内存。
    • 特点:此阶段与应用程序线程并发进行,尽量减少停顿时间,清除垃圾对象并释放内存。

3.2GC参数

  • **-XX:+UseCMSInitiatingOccupancyOnly**:只根据设定的阈值触发垃圾回收,避免动态调整。
  • **-XX:+UseConcMarkSweepGC**:启用 CMS 垃圾回收器。
  • **-XX:CMSInitiatingOccupancyFraction**:设置触发 CMS 垃圾回收的堆内存占用阈值。

img

3.2.1注意事项
  • 第一次初始标记时会短时间阻塞其他线程并对根对象进行标记。
  • 重新标记是因为并发标记时程序在运行产生会产生垃圾。
  • 并发清理时程序也在运行产生垃圾,这些垃圾会留到下一次垃圾回收。
    并发标记时程序在运行产生会产生垃圾。
  • 并发清理时程序也在运行产生垃圾,这些垃圾会留到下一次垃圾回收。
  • 因为CMS是一种标记清除的方法,会产生内存碎片,当碎片过多时垃圾回收器会退化为SerialOld进行串行的垃圾回收。

http://www.ppmy.cn/ops/124058.html

相关文章

HTML实现飘动广告效果

上述HTML代码创建了一个简单的网页,其中包含一个可以在页面内自动移动的小方块(div元素),并且当鼠标悬停在该方块上时,动画会暂停;当鼠标移开时,动画会继续。以下是代码的详细分析: …

k8s之ingress-nginx-controller安装

作者:程序那点事儿 日期:2024/01/30 01:25 要在master节点上安装 helm repo add ingress-nginx Welcome - Ingress-Nginx Controller helm search repo ingress-nginx helm pull ingress-nginx/ingress-nginx --version 4.4.2 mv ingress-nginx-4.4.…

传智杯 第六届—C

题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如:第一个字符串是"They are students.",第二个字符串是”aeiou"。删除之后的第一个字符串变成"Thy r stdnts."。保证两个字符…

诺奖争议升级:Nature杂志揭露提名黑幕,Jürgen公开反对Hinton获诺贝尔奖!

来源 | 机器之心 今年的诺贝尔物理学奖颁给了两位享誉盛名的 AI 研究者 John J. Hopfield 和 Geoffrey E. Hinton,这确实让很多人感到意外。 第一层疑问是:Hinton 和物理学有什么关系吗? 第二层疑问是:AI 科学家是如何提名物理…

RCE_绕过综合

<aside> &#x1f4a1; 管道符 </aside> <aside> &#x1f4a1; 通配符绕过 </aside> **匹配任何字符串&#xff0f;文本&#xff0c;包括空字符串&#xff1b;*代表任意字符&#xff08;0个或多个&#xff09;? 匹配任何一个字符&#xff08;不…

【Python】数据可视化之聚类图

目录 clustermap 主要参数 参考实现 clustermap sns.clustermap是Seaborn库中用于创建聚类热图的函数&#xff0c;该函数能够将数据集中的样本按照相似性进行聚类&#xff0c;并将聚类结果以矩阵的形式展示出来。 sns.clustermap主要用于绘制聚类热图&#xff0c;该热图通…

昇思MindSpore进阶教程--单节点数据缓存(中)

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 缓存共享 对于单机多卡的分布式训练的场…