CMS和G1谁是赢家

JVM存在有CMS(Concurrent Mark Sweep)垃圾收集器和G1(Garbage First)垃圾收集器,它们的优缺点对比如下:
一、CMS:
1.特点
1)以获取最短回收停顿时间为目标,适用于对响应性能有较高要求的服务器应用,如Web服务器等。
2)包含4个阶段:初始标记,并发标记,重新标记,并发清除。
初始标记和重新标记需要暂停应用,并发标记和并发清除可以与应用程序并发执行。
3)并发收集。
4)只能在老年代使用。

2.缺点
1)对 CPU 资源敏感、无法处理浮动垃圾、标记——清除算法可能会产生内存碎片。当内存碎片过多时,可能提前触发Full GC,影响性能。
2)牺牲一定的吞吐量。


二、G1
1.特点
1)专门针对拥有多核处理器和大内存的机器的收集器,旨在满足GC响应时间的延迟可控,并尽可能提高程序的吞吐量。
2)将堆划分为多个大小相等的独立区域 Region。
3)优点:并发收集、并行与并发、分代收集、空间整合、可预测停顿。
4)使用标记整理算法。包含4个运行步骤:
初始标记(Initial Marking)
并发标记(Concurrent Marking)
最终标记(Final Marking)
筛选回收(Live Data Counting and Evacuation)
5)整理内存,不会产生内存碎片。
6)停顿时间可控:G1可以根据用户设定的允许的收集停顿时间,优先处理回收价值收益最大的Region。
7)适用于多核、大内存环境,适合服务端应用。能在追求低延迟的同时保证高吞吐量。
8)在新生代和老年代都可使用。

2.缺点
1)有时G1的吞吐量可能不如其他收集器。
 


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

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

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

相关文章

MyBatis源码分析--02:SqlSession建立过程

我们再来看看MyBatis使用流程: InputStream inputStream Resources.getResourceAsStream("myBatis_config.xml"); SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSession session sqlSessionFactory.op…

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…

【惯性传感器imu】—— WHEELTEC的惯导模块的imu的驱动安装配置和运行

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、IMU驱动安装1. 安装依赖2. 源码的下载3. 编译源码(1) 配置固定串口设备(2) 修改luanch文件(3) 编译 二、启动IMU1. 运行imu2. 查看imu数据 总结 前言 WHEE…

C#WPF数字大屏项目实战02--主窗体布局

1、主窗体起始属性 设置有关属性如下: WindowStyle"None"-》无边框 AllowsTransparency"True" -》允许透明 WindowStartupLocation"CenterScreen"-》启动时位于屏幕中间 FontFamily"Microsoft YaHei"-》字体微软雅黑 …

JavaScript中sleep()函数的实现及应用

在众多编程语言中,sleep()函数是一个常见的工具,用于使程序暂停执行一段时间。例如,Python中的time.sleep(秒数)可以让程序暂停执行指定的秒数。然而,JavaScript并没有内建的sleep函数,这给开发者带来了不少困扰。因此,本文就来详细探讨如何在JavaScript中实现sleep功能,…

python编程:创建 SQLite 数据库和表的图形用户界面应用程序

在本文中,我将介绍如何使用 wxPython 模块创建一个图形用户界面(GUI)应用程序,该应用程序允许用户选择 SQLite 数据库的存放路径、数据库名称、表名称,并动态添加字段及其类型。以下是具体的实现步骤和代码示例。 C:\p…

Unity实现简单的持久化存储

在Unity中,运行过程中的内容是不会保存的,但是如果我们有些游戏数据需要持久化存储,应该怎么办呢,所以Unity为我们提供了一个简单的数据存储的API。 附上代码片段 //写入数据PlayerPrefs.SetInt("IntType", 1);PlayerPr…

FreeRTOS【13】流缓冲区使用

1.开发背景 基于以上的章节,了解了 FreeRTOS 多线程间的信号量、队列的使用,已经满足了日常使用场景。其中,队列的使用规定了队伍成员的大小,然而现实使用场景下,很多数据不都是定长大小了,例如不定长的通讯…

在AutoDL上部署Yi-34B大模型

在AutoDL上部署Yi-34B大模型 Yi介绍 Yi 系列模型是 01.AI 从零训练的下一代开源大语言模型。Yi 系列模型是一个双语语言模型,在 3T 多语言语料库上训练而成,是全球最强大的大语言模型之一。Yi 系列模型在语言认知、常识推理、阅读理解等方面表现优异。 …

一键AI抠图,证件照换背景,可部署成自己的应用

1 开发背景 AI抠图技术已经非常成熟,并且有效果非常好的开源模型。 日常中可以用于替换证件照背景 但是网上许多的证件照替换背景 竟然需要收费 鉴于此,便将目前最好的(SOTA)开源抠图模型 BRIA Background Removal v1.4 Model …

银行贷款逾期还款流程的功能测试详解

银行贷款在未能按照约定的还款日期和金额进行还款时,即被视为逾期。 一、贷款逾期处理 产生罚息:银行会按照借款合同中的约定,对逾期部分加收罚息,罚息力度各家银行不同,但通常会在原利率的基础上加收一定比例。 影响…

运用函数:素数的判定

题目:编写函数,参数是个正整数n,如果它是个素数,返回1,否则返回0. 这种“判断一个事物是否具有某种性质”的函数还具有一个学术名称——谓词(predicate) #define _CRT_SECURE_NO_WARNINGS #in…

前端Vue自定义带加减按钮的数字输入框组件的设计与实现

随着前端技术的不断发展,开发的复杂度日益提升。传统的整块应用开发方式在面对小改动或小功能增加时,常常需要修改大量代码,导致整个系统的逻辑受到影响。为了解决这个问题,组件化开发成为了前端开发的必然趋势。 一、组件化开发…

阻塞队列BlockingQueue(FIFO)

一:简介 阻塞队列:从定义上来说是队列的一种,那么肯定是一个先进先出(FIFO)的数据结构。与普通队列不同的是,它支持两个附加操作,即阻塞添加和阻塞删除方法。 阻塞添加:当阻塞队列是满时,往队列里添加元素的操作将被阻塞。 阻塞移除:当阻塞队列是空时,从队列中获取…

GPT-4o:新一代人工智能技术的全方位解析引言

目录 🐋引言 🐋梳理 GPT 各版本之间的内容 🦈GPT-1:开创性的起点 🦈 GPT-2:参数规模的大幅提升 🦈 GPT-3:参数爆炸与多任务学习 🦈GPT-4:进一步提升的智…

pdf拆分成有图和无图的pdf(方便打印)

pdf拆分成有图和无图的pdf(方便打印) 原因 打印图片要彩印,每次都要手动弄,打印的时候很麻烦; 随着打印次数的增加,时间就越来越多 为解决此问题,使用python写一个exe解决这个问题 历程 找一个python的GUI界面找到 t…

每日刷题——杭电2156.分数矩阵和杭电2024.C语言合法标识符

杭电2156.分数矩阵 原题链接:Problem - 2156 题目描述 Problem Description:我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。请求出这个矩阵的总和。 Input&#xf…

一套为家政服务行业开发的移动应用程序——家政上门服务app源码 家政上门服务系统源码

家政上门服务系统是一种通过互联网或移动应用平台,为用户提供在线预约、下单、支付和评价家政服务的系统。该系统整合了家政服务资源,使用户能够便捷地找到合适的服务人员,同时也为家政服务人员提供了更多的工作机会。 工作内容 操持家务、护…

Flink CDC - Postgres

1)部署安装Postgres服务 jiangzhongzhouZBMac-C02CW08SM ~ % docker pull postgres Using default tag: latest latest: Pulling from library/postgres latest: Pulling from library/postgres 24c63b8dcb66: Pull complete 2bb0b7dbd861: Pull complete ... D…

mac 安装java jdk8 jdk11 jdk17 等

oracle官网 https://www.oracle.com/java/technologies/downloads/ 查看当前电脑是英特尔的x86 还是arm uname -m 选择指定版本,指定平台的安装包: JDK8 JDK11的,需要当前页面往下拉: 下载到的安装包,双击安装&#x…