JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景:

  1. Serial GC(串行收集器)

    • 特点:单线程执行,对新生代进行垃圾回收时采用复制算法(Copying),在老年代可能使用标记-压缩或标记-清除算法。
    • 算法:新生代 - 复制算法;老年代 - 可能是标记-压缩或标记-清除(取决于具体配置和JVM版本)。
    • 适用场景:客户端模式下的Java应用,或者内存较小的服务器环境,强调快速简单且CPU资源有限。
  2. Parallel GC(并行收集器,也称为吞吐量收集器Throughput Collector)

    • 特点:多线程并行执行,对新生代使用复制算法,在老年代可能使用标记-压缩算法。
    • 算法:新生代 - 并行复制算法;老年代 - 标记-压缩算法。
    • 适用场景:适用于多核处理器机器,追求高吞吐量,可以接受较长时间STW的应用。
  3. CMS (Concurrent Mark Sweep) 收集器

    • 特点:并发标记清除算法,主要用于老年代,目标是在低延迟下运行,减少Stop-The-World的时间。
    • 算法:并发标记-清除(Concurrent Mark-Sweep)。
    • 适用场景:对响应时间敏感的服务端应用,需要尽量降低停顿时间,但可能产生内存碎片。
  4. G1 (Garbage-First) 收集器

    • 特点:全局并发标记和局部并发整理,将堆划分为多个Region,按需进行回收,目标是可预测的暂停时间,并且避免了全堆扫描。
    • 算法:整体上结合了复制和标记-压缩的思想,实现了混合式的垃圾回收策略。
    • 适用场景:大型堆(如超过约6GB以上)、长期服务应用,要求停顿时间可控且尽可能短。
  5. ZGC (Z Garbage Collector)

    • 特点:设计目标为任何大小堆上的停顿时间不超过10ms,使用了颜色指针、读屏障等技术,实现并发标记与并发压缩。
    • 算法:并发标记-压缩,使用染色指针技术来跟踪对象引用关系。
    • 适用场景:对停顿时间有严格要求的大规模数据处理系统,尤其适合云环境和其他需要低延时的场景。
  6. Shenandoah

    • 特点:类似于ZGC,同样致力于极低的停顿时间,通过并发压缩和原地更新引用等技术实现。
    • 算法:并发标记-压缩,具有独特的“并发转移”阶段,可以在不暂停应用的情况下移动对象。
    • 适用场景:与ZGC相似,适用于对响应时间和停顿时间有苛刻要求的应用。

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

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

相关文章

(学习打卡2)重学Java设计模式之六大设计原则

前言:听说有本很牛的关于Java设计模式的书——重学Java设计模式,然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧,本文主要记录笔者的学习笔记和心得。 打卡!打卡! 六大设计原则 (引读:这里…

K8S本地开发环境-minikube安装部署及实践

引言 在上一篇介绍了k8s的入门和实战,本章就来介绍一下在windows环境如何使用minikube搭建K8s集群,好了废话不多说,下面就和我一起了解Minikube吧。 什么是Minikube? Minikube 是一种轻量级的 Kubernetes 实现,可在本…

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…

[Angular] 笔记 23:Renderer2 - ElementRef 的生产版本

chatgpt: Renderer2 简介 在 Angular 中,Renderer2 是一个服务,用于处理 DOM 操作的抽象层。它提供了一种安全的方式来操作 DOM,同时与平台无关,有助于维护应用程序的跨浏览器兼容性和安全性。 Renderer2 的作用是在 Angular 组…

【C++】浅拷贝 / 深拷贝 / 写时拷贝

文章目录 1. 经典的string类问题2. 浅拷贝3. 深拷贝3.1 传统写法的String类3.2 现代写法的String类 4. 写时拷贝 1. 经典的string类问题 上一篇博客已经对string类进行了简单的介绍,大家只要能够正常使用即可。 链接:【C】string 在面试中,面…

20 太空漫游

效果演示 实现了一个太空漫游的动画效果,其中包括火箭、星星和月亮。当鼠标悬停在卡片上时,太阳和星星会变成黄色,火箭会变成飞机,月亮会变成小型的月亮。整个效果非常炫酷,可以让人想起科幻电影中的太空漫游。 Code &…

计算机网络(7):网络安全

网络安全问题 计算机网络上的通信面临以下的四种威胁: (1)截获(interception)攻击者从网络上窃听他人的通信内容。 (2)中断(interruption)攻击者有意中断他人在网络上的通信。 (3)篡改(modification)攻击者故意篡改网络上传送的报文。 (4)伪造(fabrication)攻击者伪造信息在网…

Python通过用户输入两个数字并计算两个

通过用户输入两个数字,并计算两个 以下实例为通过用户输入两个数字,并计算两个数字之和: 实例(Python 3.0) # -*- coding: UTF-8 -*-# Filename : test.py # author by : www.dida100.com# 用户输入数字 num1 input(输入第一个数字&#…

C# WinForm MessageBox自定义按键文本 COM组件版

c# 更改弹窗MessageBox按钮文字_c# messagebox.show 字体-CSDN博客 需要用到大佬上传到百度云盘的Hook类,在大佬给的例子的基础上改动了点。 加了ok按键,还原了最基础的messageBox。 为了适配多语言,增加ReadBtnLanguge方法。 应用时自己…

开发辅助三(缓存Redisson分布式锁+分页插件)

缓存 缓存穿透:查询一个不存在的数据,由于缓存不命中,将大量查询数据库,但是数据库也没有此记录。 没有将这次查询的null写入缓存,导致了这个不存在的数据每次请求都要到存储层查询,失去了缓存的意义。 解…

export .... 配置环境变量,环境变量都存去哪里了?

今天在配置镜像环境的时候,在纠结执行如下命令之后,这个环境变量会保存到哪里?然后找了.bash_profile和.zshrc文件都没有找到,在纠结乱存到哪里去了 export HOMEBREW_API_DOMAIN"https://mirrors.tuna.tsinghua.edu.cn/home…

复试 || 就业day02(2024.01.02)项目一

文章目录 前言最小二乘法的推导使用正规方程求解 y w x b ywxb ywxb多元线性回归 y w 1 x 1 w 2 x 2 b yw1x1w2x2b yw1x1w2x2b总结 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容来自某机构网课&#xff…

详解 docker 镜像制作的两种方式

概要 制作Docker镜像一般有2种方法: 通过Dockerfile,完成镜像的创建使用仓库中已有的镜像,安装自己使用的软件环境后完成新镜像创建 docker 常用命令 docker build: 用于构建 Docker 镜像。该命令可以从 Dockerfile 构建镜像,…

2022年12月10日-2023年12月28日

好久没写文章了,也就是好久没写流水账了.今天写的,到底是生日,还是记录这一年的工作,比较模糊,时间上来讲,两个用意合一起吧. 这一年,是极其艰苦的一年,也是不堪回首的一年.3月份的时候设宴欢送朋友离开深圳,回住处上楼时跌倒入院,之后开刀.家人们都从老家赶来,照顾了我好几天.…

Debezium发布历史43

原文地址: https://debezium.io/blog/2018/12/05/automating-cache-invalidation-with-change-data-capture/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 通过更改数据捕获自动使缓存失效 2018 年…

文本表示模型简介

文本是一类非常重要的非结构化数据,如何表示文本数据一直是机器学习领域的一个重要研究方向。那么有哪些文本表示模型?以及它们各有什么优缺点? 1. 常见的文本表示模型 1.1. 词袋模型和N-gram模型 最基础的文本表示模型是词袋模型。顾名思…

QML —— RadioButton的两个经典示例(附完整源码)

示例1-效果 示例2-效果 实例1 - 源码 import QtQuick 2.12 import QtQuick.Window 2.12import QtQuick.Layouts 1.12 import QtQuick.Controls 2.5Window {visible: truewidth: 640height: 480title: qsTr("Hello World")Text{id: classNametext: qsTr("--&quo…

CSS-5

移动端适配 屏幕分辨率 屏幕分辨率:纵横向上的像素点数,单位是px电脑常见分辨率:1920 * 10801336 * 768...硬件分辨率 -> 物理分辨率(出厂设置) 缩放调节后的分辨率 -> 逻辑分辨率(软件/驱动设置&a…

Web网页开发-CSS层叠样式表1-笔记

1.CSS的引入方式 (1)内嵌式:把style双标签写在head标签里面,可以影响同种标签 (2)行内式:把style写在标签内部,只能影响当前标签 (3)外链式:创建css文件,使用link将html文件和css文件连接起来 (4)导入式&am…