CMS垃圾回收流程的理解

初始标记:STW,标记处GC roots能直接关联到的对象速度很快
并发标记:垃圾回收线程和工作线程同时工作,遍历整个对象图,标记出可达对象
重新标记:STW,重新标记出并发标记阶段新产生的垃圾对象。(因为并发标记阶段,用户线程在运行,引用可能发生变化)
并发清理:清理垃圾,同时工作线程也会运行

CMS问题:浮动垃圾 + 内存碎片
并发清理阶段,用户线程在运行,新产生的垃圾没法清理,就会成为浮动垃圾,只能等待下一次垃圾回收进行收集
由于cms使用的是标记-清除算法,不会进行碎片整理,所以会产生内存碎片。

当碎片很多的时候,当新的对象过来的时候,可能找不到空间存放了(产生Promotion Failed),这时候会把老奶奶Serial Old请出来回收空间.

怎么解决内存碎片问题:

  • -XX:+UseCMSCompactAtFullCollection
    在FGC时进行压缩 ==> 解决碎片化的参数
  • -XX:CMSFullGCsBeforeCompaction
    多少次FGC之后进行压缩 ==> 解决碎片化的参数

这两个参数可以设置在FGC时进行压缩或者进行多少次FGC之后进行压缩。

调整–XX:CMSInitiatingOccupancyFraction,指得是当老年代的空间利用达到百分比多少的时候,进行CMS回收垃圾,让老年代有足够的空间来进行Promotion和产生浮动垃圾。
调优的时候,可以适当降低这个值,让CMS保持老年代有足够的空间,以免触发Serial Old老奶奶。

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

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

相关文章

Vite环境下uniapp Vue 3项目添加和使用环境变量的完整指南

一、引言 在uniapp项目中,合理配置环境变量对于提高开发效率和保障项目安全至关重要。Vite作为新一代的前端构建工具,为环境变量的管理提供了简洁而强大的支持。下面,我们将一步步学习如何在Vite环境下为uniapp Vue 3项目添加和使用环境变量…

Flutter鸿蒙next 中的 Drawer 导航栏

在 Flutter 中,Drawer 是一个非常常见的侧边栏导航组件。通过点击菜单按钮或滑动屏幕,我们可以显示一个滑动抽屉,它通常用于展示应用程序中的重要导航项。实现一个 Drawer 导航栏不仅能提升应用的用户体验,还能有效地管理多个页面…

机器学习(一)——基本概念、模型的评估与选择

目录 1 关于2 概念2.1 基础概念2.2 学习过程2.3 预测与评估2.4 标记与分类2.4.1 标记2.4.2 分类 2.5 回归分析2.6 聚类分析2.7 学习类型2.8 泛化能力2.9 统计学概念 3 模型评估与选择3.1 经验误差与过拟合3.2 评估方法3.2.1 留出法3.2.2 交叉验证法3.2.3 自助法3.2.4 调参与最终…

leetcode02 --- 合并两个有序链表

题目 . - 力扣(LeetCode) 合并两个有序链表 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, L…

公开仓库改私有再配置公钥后Git拉取仍需要输入用户名的问题

问题描述:git拉取私有仓库需要输入用户名和密码 我之前写了一个脚本用来定时自动拉取远程仓库更新本地仓库,后来将这个远程仓库改成私有后执行脚本就会需要输入用户名和密码。 [rootLH2020 ~]# ./sync_repo.sh 正在从远程仓库拉取最新更改… Username f…

ssm060基于SSM的高校共享单车管理系统的设计与实现+vue(论文+源码)_kaic

设计题目:高校共享单车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0…

聚观早报 | 比亚迪腾势D9登陆泰国;苹果 iOS 18.2 将发布

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 11月5日消息 比亚迪腾势D9登陆泰国 苹果 iOS 18.2 将发布 真我GT7 Pro防尘防水细节 小米15 Ultra最快明年登场 …

三菱QD77MS定位模块速度更改功能

速度更改功能” 是以任意时机将控制中的速度更改为新指定的速度的功能。更改后的速度直接设置到缓冲存储器中,并根据速度更改指令([cd.15速度更改请求)或者外部指令信号执行速度更改。 但是,机械原点复位的情况下,检测出近点狗 ON 并开始向蠕…

2024系统分析师---微服务架构(淘宝押题)

2020年6月,我单位联合 xxx、xxx有限公司开发了省 xxx 综合应用管理平台,作为公司核心技术骨干,我担任了系统架构师的职务,主要负责xxx应用系统架构体系设计及核心组件的开发工作。该系统按照省机关业务类型划分,依次包含基础功能支撑板块、平台资源管理板块、煤炭能源板块…

读多写少业务中,MySQL如何优化数据查询方案?

小熊学Java​站点:https://www.javaxiaobear.cn 编程资料合集:https://pqgmzk7qbdv.feishu.cn/base/QXq2bY5OQaZiDksJfZMc30w5nNb?from=from_copylink 看一看当面试官提及“在读多写少的网络环境下,MySQL 如何优化数据查询方案”时,你要从哪些角度出发回答问题??? 案例…

flink 内存配置(二):设置TaskManager内存

flink 内存配置(一):设置Flink进程内存 flink 内存配置(二):设置TaskManager内存 flink 内存配置(三):设置JobManager内存 flink 内存配置(四)…

js 好用的字符操作方法

序:突然感觉有些方法常见有时也用,但怕有时不记得,顺便记录一下! 一、获取类方法 let str "Hello,你们好!" console.log(str.charAt(6)) // 你 console.log(str.charAt(12)) // (空字符串)console.log(st…

Flutter鸿蒙next中的按钮封装:自定义样式与交互

在Flutter应用开发中,按钮是用户界面中不可或缺的组件之一。它不仅用于触发事件,还可以作为视觉元素增强用户体验。Flutter提供了多种按钮组件,如ElevatedButton、TextButton、OutlinedButton等,但有时这些预制的按钮样式无法满足…

线段树专题(1)

线段树 线段树可维护的信息类型 线段树可以维护的信息类型,父范围上的某个信息,可以用O(1)的时间,从子范围的信息加工得到,例如求某个范围的最大最小值,给某个范围每个位置加相同的数字,进行求和。 0到2范…

Neo4j数据库清理指南:如何安全地删除所有节点和索引

Neo4j数据库清理指南:如何安全地删除所有节点和索引 1. 基础知识2. 安全注意事项3. 清理数据库的步骤3.1 删除所有节点和关系3.2 删除所有索引和约束 4. 在Python中执行这些操作5. 常见问题解答6. 最佳实践建议结语 在使用Neo4j图数据库进行开发时,我们有…

NoETL自动化指标平台为数据分析提质增效,驱动业务决策

直觉判断往往来源于多年的经验和专业知识,能够在复杂和不确定的环境中快速做出决策反应。但这种方式普遍存在主观偏见,缺乏合理的科学依据,无法全面、客观、精准地评估和识别市场趋势与用户需求,从而造成决策失误,给业…

软考高级架构 - 8.1 - 系统质量属性与架构评估 - 超详细讲解+精简总结

第8章 系统质量属性与架构评估 软件系统属性包括功能属性和质量属性,而软件架构重点关注质量属性。 8.1 软件系统质量属性 8.1.1 概述 软件系统的质量反映了其与需求的一致性,即:软件系统的质量高低取决于它是否能满足用户提出的需求&#…

Windows系统使用OpenSSL生成自签名证书

Nginx服务器添加SSL证书。 要在Windows系统的Nginx Web服务器上使用OpenSSL生成证书,并确保该证书能在局域网内被计算机信任,你可以按照以下详细步骤进行操作: 一、生成证书 下载并安装OpenSSL: 从OpenSSL的官方网站下载适用于Wi…

Jmeter常见的几种报错及解决方案

在性能测试的过程中,使用JMeter进行负载测试是一项常见而重要的任务。然而,测试中常常会遇到各种报错,这些问题可能会影响测试结果的准确性。了解这些错误的原因及解决方案,是每位测试工程师必备的技能 进行Jmeter项目练习的时候…

《JavaEE进阶》----21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)>

PS: 开闭原则 定义和背景‌ ‌开闭原则(Open-Closed Principle, OCP)‌,也称为开放封闭原则,是面向对象设计中的一个基本原则。该原则强调软件中的模块、类或函数应该对扩展开放,对修改封闭。这意味着一个软…