当前位置: 首页 > news >正文

JVM垃圾收集器和性能调优

目标:

1.JVM垃圾收集器有哪几种?

2.CMS垃圾收集器回收步骤。

一、JVM常见的垃圾回收器

为什么垃圾回收的时候需要STW?

标记垃圾的时候,如果不STW,可能用户线程就会不停的产生垃圾。 

1.1 单线程收集

Serial和SerialOld使用单线程收集

开启参数 -XX:+UserSerialGC

1.2 多线程收集

ParallaNew和ParallaOld采用的多线程收集。

-XX:MaxGCPauseMillis=time 控制垃圾收集的暂停时间。

-XX:GCTimeRatio: 默认99,垃圾回收时间占总时间的大小。吞吐量优先。

PS组合(Paralla Scavenge+ Paralla Old组合),吞吐量优先,空间自适应调整。

200M空间不足,GC后自适应调整为250M。

扩容:伴随着GC,新生代自动扩容。两个参数:

MaxHeapFreeRatio: GC后,最大堆空间剩余比例,缩容。

MinHeapFreeRatio: GC后,最小堆空间剩余空间大小。扩容

堆空间设置为-Xms == -Xmx, 保持一个稳定的堆。

吞吐优先--》响应优先

1.3 响应优先垃圾回收器

CMS是第一款响应优先的垃圾回收器。

二、CMS垃圾回收器

CMS是针对老年代的垃圾收集器。

2.1 初始标记

  • 只标记与GC Roots直接相关连的对象
  • 需要STW

标记对象不是很多。

2.2 并发标记

继续完成标记,对并发标记的对象,继续进行标记,这是比较耗时的操作,不进行STW。 

2.3 重新标记

并发标记因为是并发执行的,此时用户线程可能重新修改了标记对象,因此需要STW,暂停用户线程,对 并发标记阶段变化的对象进行重新标记。

2.4 并发清除

CMS为什么能够做到并打清除呢?

因为CMS采用的是标记清除算法,清理垃圾时存活对象不会发生移动,因此引用地址没有变化,不需要进行STW。

2.5 预清理和并发可中断预清理

 

在并发标记和重新标记中,插入两个阶段:预清理和并发可中断预清理。

为什么能够插入?

并发标记不暂停(STW),我们要尽量缩短STW时间(重新标记时间),因此在并发阶段做的事情越多越好。

预清理控制参数:CMSPreClieaningEnabled  CMS默认开启的。

2.5.1 预清理

1)如果新生代创建的对象A,在老年代存在跨代引用没有标记的对象B,那么B需要修改为存活状态。

2)老年代应用对象发生变化,需要标记为dirty,进行重新标记。记录类似与卡表的结构。

2.5.2 并发可中断预清理

控制参数 CMSScheduleRemarkEdenSizeThreshold 2M,Eden区存活对象达到2M。

并发标记阶段,如果From区和To区的引用对象发生跨代引用。老年代应用对象发生变化,需要标记为dirty,进行重新标记。

可中断。中断条件:

 

相关文章:

JVM垃圾收集器和性能调优

目标: 1.JVM垃圾收集器有哪几种? 2.CMS垃圾收集器回收步骤。 一、JVM常见的垃圾回收器 为什么垃圾回收的时候需要STW? 标记垃圾的时候,如果不STW,可能用户线程就会不停的产生垃圾。 1.1 单线程收集 Serial和SerialOld使用单…...

汽车EDI——Volvo EDI 项目案例

项目背景 作为Volvo的长期合作伙伴,C公司收到Volvo的EDI对接邀请,需要实现EDI对接。C公司将会面临哪些挑战?又应该相应地选择何种EDI解决方案呢? 汽车行业强调供需双方的高效协同(比如研发设计、生产计划、物流信息等…...

Qt应用程序发布

一、静态编译发布 1.0:以Release模式构建工程 1.1:查看当前构建生成路径,并将所生成的.exe单独拷贝出来 1.2:将可执行文件*.exe拷贝至任一目标文件夹:D:\Temporary\QQIF 2:查看安装Qt时发布工具windeployqt.exe所在的目录 windeployqt.exe在Qt开发套件的bin目录下。Qt的每…...

Python 机器学习 基础 之 【常用机器学习库】 NumPy 数值计算库

Python 机器学习 基础 之 【常用机器学习库】 NumPy 数值计算库 目录 Python 机器学习 基础 之 【常用机器学习库】 NumPy 数值计算库...

Linux Kernel nf_tables 本地权限提升漏洞(CVE-2024-1086)

文章目录 前言声明一、netfilter介绍二、漏洞成因三、漏洞危害四、影响范围五、漏洞复现六、修复方案临时解决方案升级修复方案 前言 2024年1月,各Linux发行版官方发布漏洞公告,修复了一个 netfilter:nf_tables 模块中的释放后重用漏洞(CVE-…...

[word] word如何清除超链接 #媒体#笔记#知识分享

word如何清除超链接 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享下word如何清除超链接的操作办法,一起来学习下吧! 1、清除所有超链接 按下组合键CtrlshiftF9,就可以将网上复制带有超链…...

【Linux】进程(9):进程控制1

大家好,我是苏貝,本篇博客带大家了解Linux进程(9)进程控制1,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1 fork函数2 进程终止(A)终止是…...

华为RH2288H V3服务器iBMC的SSL证书续期

本文对华为RH2288H V3服务器iBMC的SSL证书续期,以避名登录告警提示及主机状态异常。 一、检查现网服务器iBMC的SSL证书到期时间 登录iBMC,点击配置--SSL证书,如下: 可以看到本服务器SSL证书将于今年7月22日到期。 二、联系厂家…...

ubuntu开机黑屏

BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter help for a list of built-in commands. 解决: help 看看哪个盘出问题了 fsck -y /dev/sda1 (出问题的磁盘/分区) reboot 就可以进入系统了 fsck命令&#xf…...

【risc-v】arm和riscv有什么关系或者联系?

ARM和RISC-V都是基于精简指令集计算(RISC)原理的处理器架构,它们在设计理念上有一定的联系,但同时存在一些关键的区别: 设计理念:ARM和RISC-V都采用了RISC的核心设计原则,即通过简化指令集来提高…...

Flutter项目开发模版,开箱即用

前言 当前案例 Flutter SDK版本:3.22.2 每当我们开始一个新项目,都会 引入常用库、封装工具类,配置环境等等,我参考了一些文档,将这些内容整合、简单修改、二次封装,得到了一个开箱即用的Flutter开发模版…...

私有仓库搭建

目前市面上比较常见的私有仓库搭建方法为: 通过 Sinopia 或 verdaccio 搭建(Sinopia 已经停止维护,verdaccio 是 Fork 自 Sinopia,基本上大同小异),其优点是搭建简单,不需要其他服务。通过 cnp…...

axios设置 responseType为 “stream“流式获取后端数据

使用前景: 工作过程中遇到了后端接口响应过慢,前端界面一致loading的情况,这个时候可以尝试采用将Axios的responseType参数被设置为stream类型实现。 stream介绍: stream类型意味着你希望服务器响应的数据以Node.js流&#xff…...

Apache POI(使用Java读写Excel表格数据)

1.Apache POI简介 Apache POI是一个开源的Java库,用于操作Microsoft Office格式的文件。它支持各种Office文档的读写功能,包括Word文档、Excel电子表格、PowerPoint演示文稿、Outlook电子邮件等。Apache POI提供了一组API,使得Java开发者能够…...

golang中只用定义不用初始化的类型规律总结

在go语言的开发中,有很多的内置类型是我们只需要定义而不需要初始化的, 如上文中提到的bytes.Buffer, strings.Builder。 其实在go语言中官方给我们定义的很多的类型都只需要定义,不需要初始化。 他们都有2个共同的规律&#xff…...

数据库之PostgreSQL详解

一、PostgreSQL介绍 PostgreSQL是一个功能强大的 开源 的关系型数据库。底层基于C实现。 PostgreSQL的开源协议和Linux内核版本的开源协议是一样的。。BDS协议,这个协议基本和MIT开源协议一样,说人话,就是你可以对PostgreSQL进行一些封装&a…...

找出链表倒数第k个元素-链表题

LCR 140. 训练计划 II - 力扣(LeetCode) 快慢指针。快指针臂慢指针快cnt个元素到最后; class Solution { public:ListNode* trainingPlan(ListNode* head, int cnt) {struct ListNode* quick head;struct ListNode* slow head;for(int i …...

ssm629基于SSM的二手交易平台设计与开发+jsp【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…...

【Unity】资源管理与热更 YooAsset+HybridCLR

1 前言 Unity资源管理与热更新该用什么方法?当然是YooAssetHybridCLR了,YooAsset负责资源管理与热更,HybridCLR负责支持代码热更。 但这里我就不自己讲了,我会提供相关学习链接(前人栽树我躺平)。 2 学习链…...

PDF批量加水印 与 去除水印实践

本文主要目标是尝试去除水印,但是为了准备测试数据,我们需要先准备好有水印的pdf测试文件。 注意:本文的去水印只针对文字悬浮图片悬浮两种特殊情况,即使是这两种情况也不代表一定都可以去除水印。 文章目录 批量添加透明图片水印…...

【MySQL】服务器配置和管理

本文使用的MySQL版本是8.0 MySQL服务器介绍 MySQL服务器通常说的是mysqld程序。 mysqld 是 MySQL 数据库服务器的核心程序,负责处理客户端的请求、管理数据库和执行数据库操作。管理员可以通过配置文件和各种工具来管理和监控 mysqld 服务器的运行 官方文档&…...

限流定义、算法、实施方案

限流定义 1、 时间 , 基于某段时间或某个时间点,即:时间窗口 2、资源: 对可用资源进行限制: QPS/连接数/传输速率/黑白名单等 分布式环境下,主流限流方案: 网关层限流:流量入口Ngi…...

[312. 戳气球] 动态规划寻找转移函数

Problem: 312. 戳气球 文章目录 思路Code 思路 这个哥们写的思路真的很牛逼&#xff0c;转载一下他。 戳气球题解 Code class Solution { public:int maxCoins(vector<int>& nums) {nums.insert(nums.begin(), 1);nums.push_back(1);int n nums.size();vector<v…...

以操作系统和Java的视角看“中断“

引言 fucking-java-concurrency主要解读了在开发过程中常常会遇到的Java并发问题&#xff0c;本文主要总结Java的中断原理和应用。 PS: https://github.com/WeiXiao-Hyy/blog整理了后端开发的知识网络&#xff0c;欢迎Star&#xff01; 操作系统的中断 什么是中断&#xff1…...

【运维】如何在Ubuntu 22上使用Python 3.8的虚拟环境

在Ubuntu 22上使用Python 3.8的虚拟环境安装Ryu是相对简单的。以下是一步一步的指南&#xff1a; https://qq742971636.blog.csdn.net/article/details/139566151 安装Python 3.8&#xff1a; 在Ubuntu 22上&#xff0c;Python 3.8可能不是默认安装的版本。你可以使用以下命令…...

门面模式Api网关(SpringCloudGateway)

1. 前言 当前通过Eureka、Nacos解决了服务注册和服务发现问题&#xff0c;使用Spring Cloud LoadBalance解决了负载均衡的需求&#xff0c;同时借助OpenFeign实现了远程调用。然而&#xff0c;现有的微服务接口都直接对外暴露&#xff0c;容易被外部访问。为保障对外服务的安全…...

玩转Matlab-Simscape(初级)- 09 - 在Simulink中创建曲柄滑块机构的控制模型

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 09 - 在Simulink中创建曲柄滑块机构的控制模型 ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 09 - 在Simulink中创建曲柄滑块机构的控制模型 前言一、问题描述二、创建模型2.1 识别机构中的刚体2.2 确定刚…...

手撸一个java网关框架

手写一个简易的Java网关框架涉及到很多方面&#xff0c;但我会提供一个基本的框架概念和代码示例&#xff0c;帮助你理解网关的基本构建。以下是一个简单的Java网关框架的实现&#xff1a; 定义路由&#xff1a;需要一个路由表来映射请求的URL到对应的处理器。 请求处理&#x…...

亮数据代理IP助力高效数据采集

文章目录 &#x1f4d1;前言一、爬虫数据采集痛点二、代理IP解决爬虫痛点2.1 为什么可以2.2 本篇采用的代理IP 四、零代码获取数据4.1 前置背景4.2 亮数据浏览器自动抓取数据4.3 使用步骤&#xff1a; 五、数据集5.1 免费样本5.2 定制数据集 &#x1f324;️个人小结 &#x1f…...

VS2022,DLL1调用lib,lib调用DLL2

DLL1调用lib&#xff0c;lib调用DLL2 问题1&#xff1a;为什么在dll1中需要引入dll2的.lib文件 当你有一个工程&#xff08;dll1&#xff09;调用静态库&#xff08;lib&#xff09;&#xff0c;而静态库&#xff08;lib&#xff09;又调用另一个DLL&#xff08;dll2&#xf…...

MAC怎么做网站/seo首页排名优化

Python是一门更注重可读性和效率的语言&#xff0c;尤其是相较于Java&#xff0c;PHP以及C这样的语言&#xff0c;它的这两个优势让其在开发者中大受欢迎。诚然&#xff0c;它有点老了&#xff0c;但仍是80后啊 —— 至少没有 Cobol 或者 Fortran 那么老。而且&#xff0c;如果…...

做手机网站版面做多宽/百度网页版浏览器

首先新建一个文本&#xff0c;重新将后缀名改为.bat 右击编辑 输入start http://geekprank.com/hacker/--kiosk Ctrls保存。 start就是访问这个网址&#xff0c;当然我提供的这个网址还挺有意思的&#xff01; 效果图如下&#xff1a; 结语&#xff1a;今天的代码你学废了吗&a…...

开发公司采购招聘/seo关键词分析

最近有个概念吵得很火&#xff0c;网络爬虫&#xff0c;但是基本都是用什么python或者JAVA写&#xff0c;貌似很少看到用c写的&#xff0c;我在网上找了一个&#xff0c;看到其实还是很简单的算法。 算法讲解&#xff1a;1.遍历资源网站 2.获取html信息 3.然后解析网址和图片…...

企业网上推广方式/西安seo霸屏

LeetCode 456. 132模式 难度 中等 给定一个整数序列&#xff1a;a1, a2, …, an&#xff0c;一个132模式的子序列ai, aj, ak被定义为&#xff1a;当i < j < k时&#xff0c;ai < ak < aj。设计一个算法&#xff0c;当给定有n个数字的序列时&#xff0c;验证这个…...

企业网站建设的好处/网站流量数据分析

【H5】 svg画扇形饼图 效果图如下&#xff1a; 封装代码如下&#xff1a; 代码内有详细注解哦&#xff01; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widt…...

商标设计网站图/网络推广公司企业

1.应用场景 主要用于学习计算机网络中的网络I/O的各种模型&#xff0c;以及各自的优缺点&#xff0c;使用场景。 2.学习/操作 1.文档阅读 2021-11-02 - 为什么网络 I/O 会被阻塞&#xff1f;_穿素白衫的少年的博客-CSDN博客 计算机组成原理/计算机网络 - 网卡 - 探究其工作原理…...