JVM 有哪些垃圾回收器

news2025/2/26 6:34:08

引言:

如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。下图展示了
7种作用于不同分代的收集器,其中用于回收新生代的收集器包括Serial、PraNew、Parallel
Scavenge,回收老年代的收集器包括Serial Old、Parallel Old、CMS,还有用于回收整个Java堆的
G1收集器。不同收集器之间的连线表示它们可以搭配使用。
在这里插入图片描述
1:Serial收集器(复制算法): 新生代单线程收集器,标记和清理都是单线程,优点是简单高效;
ParNew收集器 (复制算法): 新生代收并行集器,实际上是Serial收集器的多线程版本,在多核
CPU环境下有着比Serial更好的表现;

2:Parallel Scavenge收集器 (复制算法): 新生代并行收集器,追求高吞吐量,高效利用 CPU。吞吐量 = 用户线程时间/(用户线程时间+GC线程时间),高吞吐量可以高效率的利用CPU时间,尽
快完成程序的运算任务,适合后台应用等对交互相应要求不高的场景;

3:Serial Old收集器 (标记-整理算法): 老年代单线程收集器,Serial收集器的老年代版本;

4:Parallel Old收集器 (标记-整理算法): 老年代并行收集器,吞吐量优先,Parallel Scavenge收
集器的老年代版本;

5:CMS(Concurrent Mark Sweep)收集器(标记-清除算法): 老年代并行收集器,以获取最短回收停顿时间为目标的收集器,具有高并发、低停顿的特点,追求最短GC回收停顿时间。

6:G1(Garbage First)收集器 (标记-整理算法): Java堆并行收集器,G1收集器是JDK1.7提供的一个新收集器,G1收集器基于“标记-整理”算法实现,也就是说不会产生内存碎片。此外,G1收
集器不同于之前的收集器的一个重要特点是:G1回收的范围是整个Java堆(包括新生代,老年
代),而前六种收集器回收的范围仅限于新生代或老年代。

7:ZGC (Z Garbage Collector) 是一款由Oracle公司研发的,以低延迟为首要目标的一款垃圾收集器。它是基于动态Region内存布局,(暂时)不设年龄分代,使用了读屏障、染色指针和内
存多重映射等技术来实现可并发的标记-整理算法的收集器。在 JDK 11 新加入,还在实验阶
段,主要特点是:回收TB级内存(最大4T),停顿时间不超过10ms。
优点: 低停顿,高吞吐量, ZGC 收集过程中额外耗费的内存小。
缺点: 浮动垃圾目前使用的非常少,真正普及还是需要写时间的。

新生代收集器: Serial、 ParNew 、 Parallel Scavenge
老年代收集器: CMS 、Serial Old、Parallel Old
整堆收集器: G1 , ZGC (因为不涉年代不在图中)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1906_ AMBA_高级MCU总线架构

1906_ AMBA_高级MCU总线架构 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 在看内核相关的文件的时候看到了AMBA这个缩写,查了一下具体的概念。这个其实是一个总线架构,应该是ARM设计的。我找到了相关的介绍网页: A…

了解GPT:ChatGPT的终极指南

在人工智能(AI)的世界里,有一颗冉冉升起的新星正在革命性地改变我们与机器的交互方式:ChatGPT。在本文中,我们将深入研究什么是ChatGPT,为什么底层技术GPT如此强大,以及它是如何实现其卓越功能的…

激光打标机在塑料行业的高精度标记

随着科技的不断发展,激光打标机在塑料行业中的应用越来越广泛。这种高精度的标记技术为塑料产品提供了持久、清晰、可追溯的标识,满足了生产过程中的各种需求。 首先,激光打标机具有高精度的标记能力。这种技术利用激光束在塑料表面进行刻划&…

掌握这个防水浸技巧,工作中优势真的大很多!

随着科技的不断发展,水浸监控系统在各个领域中变得越来越重要。无论是工业、商业还是居住环境,及时发现并有效处理水浸问题对于维护设备、减少损失、确保安全至关重要。 水浸监控系统通过及时检测水浸情况,提供实时报警和监控,为用…

Python + Selenium —— 键盘操作!

Keys 类对键盘按键进行了定义,结合 send_keys() 方法可以向页面元素发送各种键盘按键。 比如在京东首页的搜索框,输入查询的内容后,再按一次回车。这是我们大部分人操作搜索的过程。 from selenium.webdriver.common.keys import Keys # 引…

【web APIs】6、(学习笔记)有案例!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、正则表达式正则基本使用元字符边界符量词范围字符类 二、替换和修饰符三、正则插件change 事件判断是否有类 四、案例举例学生就业信息表用户注册界面用户登…

感受指针--初使用

程序首先定义了一个整数指针p和一个整数j,并给j赋值为10。 然后,程序将j的地址赋给p,使p指向j。 程序接着打印p(即j的地址)的十六进制表示。 接着,程序打印p本身的地址的十六进制表示。 最后&#xff0…

使用面向对象思想去封装实现canvas功能

前言 各种插件/库和一些常规的业务代码,最大的区别就在于编程的思路与方法。 比如我们现在想写一段业务代码,使用js实现一个矩形,那很简单,几行代码就可以了 const canvas document.getElementById(canvas)const mode canvas.getContext(2d)mode.rect(200,200,200,200)mode…

内网渗透-DC-9靶机渗透

攻击机:kali 192.168.236.137 目标机:dc-9 192.168.236.138 一、信息收集 1.使用arp-scan -l和nmap进行主机发现和端口信息收集 nmap -sS -T5 --min-rate 10000 192.168.236.138 -sC -p- 发现22端口被阻塞 2.whatweb收集一下cms指纹信息 what http…

无人驾驶决策规划技术理论(一)

本博客记录学习李柏老师所著的决策规划技术理论与实践中的关键知识,想以此作为自己学习的框架,方便自己日后回顾。 1 非结构化场景决策规划方法 场景:港口、停车场的泊车附近区域、偏僻道路、野外 特色:障碍物位置杂乱无章 决策…

unity使用Registry类将指定内容写入注册表

遇到一个新需求,在exe执行初期把指定内容写入注册表,Playerprefs固然可以写入,但是小白不知道怎么利用Playerprefs写入DWORD类型的数据,因此使用了Registry类 一. 对注册表中键的访问 注册表中共可分为五类 一般在操作时&#…

个人如何合法自建服务器?

随着互联网技术的不断发展,越来越多的人开始考虑自建服务器,以满足自己的需求。但是,在自建服务器之前,必须了解相关的法律法规和规定,以确保自己的行为合法合规。本文将介绍个人如何合法自建服务器,以供参…

【Oracle】玩转Oracle数据库(七):RMAN恢复管理器

前言 嘿,数据库大魔法师们!准备好迎接新的技术大招了吗?今天我们要探索的是Oracle数据库中的神奇利器——RMAN恢复管理器!🛡️💾 在这篇博文【Oracle】玩转Oracle数据库(七)&#xf…

单片机SWJ 调试端口(SW-DP和JTAG)、SWD下载电路

单片机下载接口是指用于将编写好的程序代码下载到单片机芯片中的接口。常见的单片机下载接口包括以下几种: 1. **串口下载接口**:通过串口(如UART或RS-232接口)与计算机或下载器相连,将程序代码通过串口传输到单片机内…

云里物里轻薄系列电子价签,如何革新零售?

云里物里的DS轻薄系列电子价签,凭借轻巧外观和强劲性能,为零售行业提供了更便捷的商品改价方案。这不仅是对纸质价标的替代,更以其安全性和可持续发展性,实现对零售行业的效率升级,让商家们轻松迎接数字化时代的挑战&a…

Java毕业设计-基于springboot开发的家乡特色推荐系统-毕业论文+答辩PPT(有源代码)

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能模块3、用户功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的家乡特色推荐系…

Vue+SpringBoot打造音乐偏好度推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1.2 我的喜好模块2.1.3 每日推荐模块2.1.4 通知公告模块 2.2 用例图设计2.3 实体类设计2.4 数据库设计 三、系统展示3.1 登录注册3.2 音乐档案模块3.3 音乐每日推荐模块3.4 通知公告模…

客服办公神器·带你实现快捷回复自由

节后很多做客服的小伙伴都来找我说回复挺力不从心的,让我支点招。因为每个小伙伴遇到的顾客问题和回复情况都各不相同,我还是建议大家下载一个利于提高自己办公效率的软件,像我一直在用的这个“客服宝快捷回复软件”真是客服打工人之光&#…

使用maven项目引入jQuery

最近在自学 springBoot ,期间准备搞一个前后端不分离的东西,于是需要在 maven 中引入jQuery 依赖,网上百度了很多,这里来做一个总结。 1、pom.xml 导入依赖 打开我们项目的 pom.xml 文件,输入以下坐标。这里我使用的是…

uniapp开发笔记----发布成微信小程序体验版本

HBuilderX-vue2 一 创建vue2项目并打包成微信小程序,发布到体验版本1. 创建项目2. 开发页面3. 打包成微信小程序4. 发布成微信小程序体验版本-上传代码成功后登陆微信公众平台[https://mp.weixin.qq.com/](https://mp.weixin.qq.com/)-找到版本可管理->开发版本-…