JVM之经典垃圾收集器

目录

Serial收集

ParNew收集器

Parallel Scavenge收集器

Serial Old收集器

Parallel Old收集器

CMS垃圾收集器(重点):

Garbage First 收集器(重点):


Serial收集


使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。

ParNew收集器


ParNew 收集器除了支持多线程并行收集之外,其他与 Serial 收集器相比并没有太多创新之处,但它却是不少运行在服务端模式下的 HotSpot 虚拟机,尤其是 JDK 7 之前的遗留系统中首选的新生代收集器,其中有一个与功能、性能无关但其实很重要的原因是:除了Serial 收集器外,目前只有它能与 CMS收集器配合工作。


Parallel Scavenge收集器


同样是基于标记-复制算法实现的收集器,也是能够并行收集的多线程收集器,Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能 地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。所谓吞吐量就是处理器用于运行用户代码的时间与处理器总消耗时间的比值

Serial Old收集器


Serial Old 是 Serial 收集器的老年代版本,它同样是一个单线程收集器,使用标记 - 整理算法。

Parallel Old收集器


Parallel Old 是 Parallel Scavenge 收集器的老年代版本,支持多线程并发收集,基于标记 - 整理算法实现

CMS垃圾收集器(重点):

基于标记清除算法实现,整体过程分为四个步骤:

初始标记:仅仅只是标记一下 GC Roots能直接关联到的对象,速度很快;

并发标记:从GC Roots的直接关联对象开始遍历整个对象图的过程与垃圾收集线程一起并发运行

重新标记:为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录

并发清除清理删除掉标记阶段判断的已经死亡的对象与用户线程同时并发

优点:并发收集,低停顿

缺点:1、CMS收集器对处理器资源非常敏感,多并发导致程序变慢

2、无法清除浮动垃圾

3、基于 “ 标记 - 清除 ”算法实现的收集器,会有大量空间碎片产生。

Garbage First 收集器(重点):

G1 开创的基于 Region 的堆内存布局。

其堆内存的布局与其他收集器有非常明显的差异:

G1 不再坚持固定大小以及固定数量的分代区域划分,而是把连续的Java 堆划分为多个大小相等的独立区域( Region ),每一个 Region 都可以 根据需要,扮演新生代的 Eden 空间、 Survivor 空间,或者老年代空间。收集器能够对扮演不同角色的Region采用不同的策略去处理,这样无论是新创建的对象还是已经存活了一段时间、熬过多次收集的旧对象都能获取很好的收集效果。

四个步骤:

初始标记:标记了从GC Root开始直接关联可达的对象。STW(Stop theWorld)执行。

并发标记:从GC Roots的直接关联对象开始遍历整个对象图的过程(找出要回收的对象)(与垃圾收集线程一起并发运行)

最终标记:STW,标记在并发标记过程中产生的垃圾。=重新标记(标记的范围更小)

筛选回收:制定回收计划,选择多个Region 构成回收集,把回收集中Region的存活对象复制到空的Region中,再清理掉整个旧日Region的全部空间。需要STW

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

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

相关文章

利用换元法计算积分的常见题型(考研高数复习)

考研中常见的几种换元法积分计算题 (1)被积式仅包含一个根式:根号下为有 a a a 和 x x x 的平方和/平方差 此种类型的积分题型,可以通过构造单个锐角大小为 t t t 的直角三角形,利用勾股定理和三角函数进行代换。 平方和的情况 形如 ∫…

Java高级工程师应该怎样准备笔试?

哈哈,大早上,有个粉丝问:Java高级工程师应该怎样准备笔试? 这问题还真是小意思啊。Java高级工程师的笔试怎么准备?你问得好!咱们混迹江湖这么久,什么风浪没见过,面试笔试这些东西&a…

Java:swagger/knife4j接口返回的json数据中文显示乱码问号???

目录 问题描述问题解决参考文章 问题描述 正常接口的中文返回是正确的 而只要发生异常处理,就会使用全局统一异常处理,输出包含中文字符的json字符串,发现,全都变成了问号?????? /*** 统一异常处理*/ ControllerAdvice Sl…

java学习----注释

简介 override介绍: 添加了这个注释其实是做了个语法校验的作用 override定义 Deprecated介绍: 源码: SuppressWarnings介绍: 源码: 元注解 Retention注解介绍: 案列 Target注解介绍: Documente…

LLM - 理解 Transformer 的位置编码 sin cos 的作用与原理

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140697827 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Transformer 模型中的位置编码是关键技术,通过为每个词嵌入向量添加位…

数据库第五次作业

1. 触发器 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量 建立触发器,实现功能:客户修改订单,商品…

【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

分布式:保证分布式事务的一致性

文章目录 保证分布式事务的一致性XA协议两阶段提交TCC模式SAGA模式 本篇开始进行分布式的学习,由于时间原因,我也没有过多时间深入学习,因此打算在有时间就进行这块内容的学习,学习的切入点也是从一些问题开始进行切入学习吧 保证…

2024年铜川宜君半程马拉松,暴晒+爬坡152安全完赛

1、赛事背景 2024年7月21日,我参加了2024年铜川宜君半程马拉松赛,7月举办的赛事很少,全国都算温度比较高的,虽然宜君是一个山城,还是会担心气温会高。 临开赛1、2周,陕西区域降水比较多,赛前一…

【算法专题】双指针算法之LCR 179. 查找总价格为目标值的两个商品(力扣)

欢迎来到 CILMY23的博客 🏆本篇主题为:双指针算法之LCR 179. 查找总价格为目标值的两个商品(力扣) 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法…

使用nginx解决本地环境访问线上接口跨域问题

前言 前端项目开发过程中,经常会遇到各种各样的跨域问题。 虽然大部分时候,由脚手架自带的proxy功能即可解决问题,如webpack,vite等;但是若没有通过脚手架搭建项目,或者必须使用某些特殊规则转发时&#…

了解光耦合器从基础到应用

光耦合器也称为光电耦合器,是一种利用光信号传递电信号的电子元器件。它广泛应用于各种电子设备和电路中,因其在隔离电气信号、提高抗干扰能力方面的独特优势,备受工程师们的青睐。本文将为光耦爱好者和高级工程师提供一份有关光耦合器的知识…

解锁人工智能学习中的数学密钥

一、启航:奠定数学基础 1. 线性代数:AI的入门语言 学习目标:掌握向量、矩阵的基本概念及运算,理解线性空间、线性变换及特征值、特征向量的意义。学习建议:从基础教材入手,如《线性代数及其应用》&#x…

企业级视频拍摄与编辑SDK的全面解决方案

视频已成为企业传播信息、展示品牌、连接用户的重要桥梁,如何高效、专业地制作高质量视频内容,成为众多企业面临的共同挑战。美摄科技,作为视音频技术领域的创新先锋,以其强大的视频拍摄与编辑SDK,为企业量身打造了一站…

cmake 常用功能解析

cmake_minimum_required(VERSION 3.1) # 声明要求的 cmake 最低版本# 设置项目名称 和编程语言 project(yolov8 LANGUAGES CXX CUDA)set(CMAKE_CUDA_ARCHITECTURES 60 61 62 70 72 75 86 89 90) # 通过 CMake 设置架构版本号 set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/n…

1.Spring Boot 简介(Spring MVC+Mybatis-plus)

文章目录 一,Spring Boot 简介二,搭建springboot项目并整合mybatis-plus框架1.pom导依赖2.添加启动项3.配置文件.yml 三,springboot集成 Spring MVC1.springmvc定义2.应用注解 一,Spring Boot 简介 SpringBoot是Spring的子工程(或…

AI回答:C#中异步方法获得列表后的Result方法探讨

【代码】 (await _xxxrepository.GetListAsync()).First(); await _xxxrepository.GetListAsync().Result.First(); 【区别分析】: 第一行: (await _xxxrepository.GetListAsync()).First(); 评价:一旦异步方法完成并返回结果,使…

Sip for Mac:强大的屏幕取色软件

Sip for Mac是一款功能强大的屏幕取色工具软件,专为设计师、开发者和创作者打造。这款软件以其精准的取色功能和丰富的颜色管理选项而备受好评。 Sip的核心功能是提供多种取色工具,包括拾色器、取色板和屏幕取色等,使用户能够轻松地从屏幕上…

分享几种电商平台商品数据的批量自动抓取方式

在当今数字化时代,电商平台作为商品交易的重要渠道,其数据对于商家、市场分析师及数据科学家来说具有极高的价值。批量自动抓取电商平台商品数据成为提升业务效率、优化市场策略的重要手段。本文将详细介绍几种主流的电商平台商品数据批量自动抓取方式&a…

带哨兵位的双向循环链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 带哨兵位的双向循环链表 一、双向循环链表二、带哨兵位的的双向循环链表结构?2 双向循环链表接口函数的实现2.1 用于调试打印链表的接口函数2.2 双向循环链表的初…