JVM CMS 在Full GC时针对跨代引用的优化
个人博客
JVM CMS 在Full GC时针对跨代引用的优化 | iwts’s blog
跨代引用问题
Full GC慢的一个很重要的问题:跨代引用。
简单描述就是:
现代JVM一般是根据对象存活的特性进行了分代,提高了垃圾收集的效率。但是像在回收新生代的时候,有可能有老年代的对象引用了新生代对象,所以老年代也需要作为根,但是如果扫描整个老年代的话效率就又降低了。
这个就是跨代引用的问题。
跨代引用对Full GC的影响
由于跨代引用的扫描问题,导致Full GC时,如果此时新生代的数据量很大,会导致扫描时间显著增加。
CMS 对跨代引用的优化
最简单粗暴的方法:Full GC前强制走一个Minor GC,那么新生代数据降到很低的值,就能解决这个问题。而CMS也是基本采用这个方案。
CMS 并发预清理
CMS在Remark前增加了一个可中断的并发预清理(CMS-concurrent-abortable-preclean),该阶段主要工作仍然是并发标记对象是否存活,只是这个过程可被中断。
此阶段在Eden区使用超过2M(默认阈值,可修改)时启动,如果此阶段执行时等到了Minor GC,那么跨代引用的对象将会跟随Minor GC被清除掉,Reamark阶段需要扫描的对象就少了。
此外,CMS为了避免这个阶段没有等到Minor GC而陷入无限等待,提供了参数CMSMaxAbortablePrecleanTime
,默认为5s,如果可中断的预清理执行超过5s,不管发没发生Minor GC,都会终止此阶段,进入Remark。
所以,CMS在Remark前也不一定会执行Minor GC,还是有风险。CMS提供CMSScavengeBeforeRemark
参数,设置后可以保证Remark前强制进行一次Minor GC。
相关文章:
JVM CMS 在Full GC时针对跨代引用的优化
个人博客 JVM CMS 在Full GC时针对跨代引用的优化 | iwts’s blog 跨代引用问题 Full GC慢的一个很重要的问题:跨代引用。 简单描述就是: 现代JVM一般是根据对象存活的特性进行了分代,提高了垃圾收集的效率。但是像在回收新生代的时候&a…...

【Makefile】Makefile 编译 Keil 工程(Linux 环境)
本文使用的开发板为 stm32f103C8T6,使用的驱动库为stm32标准库。 目录 一、软件下载 1、stm32 标准库 2、arm-none-eabi 工具链 3、烧录器 二、Keil 工程改造 1、Keil 工程 2、基本 Makefile 工程 3、添加启动文件 4、添加链接脚本 5、去掉 core_cm3.c 三…...
Django的视图层——1HttpResponse对象详解
在django.http模块中定义了HttpResponse对象的APIHttpRequest对象由Django自动创建,HttpResponse对象由程序员创建在每一个视图函数中必须返回一个HttpResponse对象,当然也可以是HttpResponse子对象 1.不用模板,直接返回数据 from django.http import HttpRespons…...

企业活动想找媒体报道宣传怎样联系媒体?
在那遥远的公关江湖里,有一个传说,说的是一位勇士,手持鼠标和键盘,踏上了寻找媒体圣杯的征途。这位勇士,就是我们亲爱的市场部门小李,他的任务是为公司即将举行的一场盛大的企业活动找到媒体的聚光灯。 小李的故事,开始于一张空白的Excel表格,上面列着各大媒体的名称,旁边是一片…...

基于ChatGPT+RPA的融资融券业务担保资产风险评价
原载《会计之友》2024年第2期 作者简介 李闻一 男,湖北洪湖人,华中师范大学经济与工商管理学院教授、博士生导师,会计学科带头人,研究方向:财务共享、公司金融、风险管理 黄怡凡 女,湖北公安人…...
2. CSS选择器与伪类
2.1 基本选择器回顾 在开始介绍CSS3选择器之前,我们先回顾一下CSS的基本选择器。这些选择器是所有CSS开发的基础。 2.1.1 元素选择器 元素选择器用于选中指定类型的HTML元素。 /* 选中所有的<p>元素 */ p {color: blue; }2.1.2 类选择器 类选择器用于选中…...

tcpdump源码分析
进入tcpdump.c(函数入口)之前,先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作,每一个参数有对应的flag, 在tcpdump 的main 里面, 会根据用户的传入的参数来…...

搭建Harbor镜像仓库
前言 1、系统版本:CentOS9 2、harbor版本:v2.9.4 3、提前安装好docker和docker-compose,参考地址。我这里安装的版本是docker:26.1.3 docker-compose:v2.27.1 安装步骤 下载安装包 1、下载地址:ha…...

【C/C++】Makefile文件的介绍与基本用法
创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 🔥c系列专栏:C/C零基础到精通 🔥 给大…...

PHP生成二维码+二维码包含logo图片展示
composer require chillerlan/php-qrcode 用到的扩展自己安装(注:只生成二维码只要开gd扩展就行) 仅生成二维码看这个: use chillerlan\QRCode\QRCode;public function QRCode(){$qrcode new QRCode();$url "http://ww…...

vue项目打包教程
如果是用 vue-cli 创建的项目,则项目目录中没有 config 文件夹,所以我们需要自建一个配置文件;在vue项目目录下创建文件 vue.config.js,需注意文件名称必须是 vue.config.js,然后在文件中插入以下代码: 文件…...

制作电子画册速成攻略,快来试试
当今社会,数字媒体日益普及,电子画册作为一种崭新的展示方式,受到了越来越多人的青睐。它不仅形式新颖,互动性强,而且制作起来也并不复杂。想知道如何快速掌握制作电子画册的技巧吗?我来教你吧。 接下来&…...
【java程序设计期末复习】chapter7 内部类和异常类
内部类和异常类 内部类 ava支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 注意 (1)内部类的类体中不可以声明类变量和类方法。 (2)外嵌类的类体中可以用内部类…...

Windows下安装配置深度学习环境
Windows下安装配置深度学习环境 1. 准备工作 1.1 环境准备 操作系统:win10 22H2 GPU:Nvidia GeForce RTX 3060 12G 1.2 安装Nvidia驱动、cuda、cuDNN 下载驱动需要注册并登录英伟达账号。我这里将下面用到的安装包放到了百度网盘,可以关注微信…...

如何使用ssh将vscode 连接到服务器上,手把手指导
一、背景 我们在开发时,经常是window上安装一个vscode编辑器,去连接一个虚拟机上的linux,这里常用的是SSH协议,了解其中的操作非常必要。 二、SSH协议 SSH(Secure Shell)是一种安全协议,用于…...
Tomcat调优参数
JVM优化 Tomcat是一个Web容器,所有的jar其实都共享Tomcat中的JVM参数,所以Tomcat的JVM参数优化至关重要。 Tomcat的JVM参数是在启动脚本中设置的,如想要设置最大堆内存和最小堆内存时: 在windows的启动脚本catalina.bat中的set &q…...

云计算和大数据处理
文章目录 1.云计算基础知识1.1 基本概念1.2 云计算分类 2.大数据处理基础知识2.1 基础知识2.3 大数据处理技术 1.云计算基础知识 1.1 基本概念 云计算是一种提供资源的网络,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无…...

VAE-变分自编码器(Variational Autoencoder,VAE)
变分自编码器(Variational Autoencoder,VAE)是一种生成模型,结合了概率图模型与神经网络技术,广泛应用于数据生成、表示学习和数据压缩等领域。以下是对VAE的详细解释和理解: 基本概念 1. 自编码器&#…...
Android Room 使用模版
文章目录 一、配置依赖 plugins {id kotlin-kapt }android {compileOptions {sourceCompatibility JavaVersion.VERSION_17targetCompatibility JavaVersion.VERSION_17}kotlinOptions {jvmTarget 17} }dependencies {implementation("androidx.room:room-runtime:2.4.2&…...

Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定
相信很多人都有远程连接家中设备的需求,如远程连接家中的NAS、Windows等服务,所以会涉及到一个内网穿透工具的使用,如果没有公网IP的情况下,推荐大家使用ZeroTier,这是一款强大的内网穿透工具。 mac和windows版的操作…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...