JVM系列——垃圾收集器Parrlel Scavenge、CMS、G1常用参数和使用场景

背景

当前在Java领域,JDK 8版本仍然享有广泛的使用,它支持了Parallel Scavenge、CMS和G1这几种垃圾收集器。因此,为了在业务应用中更加高效地进行开发和性能调优,我们需要对这些垃圾收集器的工作原理和特性有一个全面的理解和认识。

在这里插入图片描述

本文主要梳理了上述三种垃圾收集器(Parallel Scavenge、CMS和G1)的常用配置参数和使用场景,以便在实际应用中能够更加精准地调优和应对不同的性能需求。

简介

Parallel Scavenge是JDK8默认的垃圾收集器,其年轻代使用Parallel并行收集器进行垃圾回收;老年代使用Parallel Old并行收集器进行垃圾回收。

CMS在JDK1.5版本引入,JDK8中年轻代使用ParNew 收集器进行垃圾回购;老年代使用CMS收集器进行垃圾回收;极端情况下时会使用Serial收集器进行兜底Full GC。

G1一款在server端运行的垃圾收集器,专门针对于拥有多核处理器和大内存的机器,在JDK 7u4版本发行时被正式推出,在JDK9中更被指定为官方GC收集器。基于分区算法实现垃圾回收。

常用参数

Parrllel Scavenge回收器

-XX: +UseParallelGC
手动指定年轻代使用Parallel并行收集器执行内存回收任务。

-XX: +UseParallelOldGC
手动指定 老年代都是使用并行回收收集器

-XX:ParallelGCThreads
设置年轻代并行收集器的线程数。

-XX:MaxGCPauseMillis
设置垃圾收集器最大停顿时间(,(即STW的时间)。单位是亳秒

-XX : GCTimeRatio
垃圾收集时间占总时间的比例,用于衡量吞吐量的大小。默认值99

-XX: +UseAdaptiveSizePolicy
设置Parallel Scavenge收集器具有自适应调节策略

CMS回收器

-XX: +UseConcMarkSweepGC
手动指定使用CMS收集器执行内存回收任务。

-XX: CMSlnitiatingOccupanyFraction
设置堆内存使用率的阈值,一旦达到该阅值,便开始进行回收。

-XX: +UseCMSCompactAtFullCollection
用于指定在执行完Full GC后对内存空间进行压缩整理,以此避免内存碎片的产生。不过由于内存压缩整理过程无法并发执行,所带来的问题就是停顿时间变得更长了。

-XX: CMSFullGCsBeforeCompaction
设置在执行多少次Full GC后对内存空间进行压缩整理。

-XX: ParallelCMSThreads
设置CMS的线程数量

G1回收器

-XX: +UseG1GC
手动指定使用G1收集器执行内存回收任务。

-XX :G1HeapRegionSize
设置每个Region的大小。值是2的幂,范围是1MB到32MB之间,目标是根据最小的Java堆大小划分出约2048个区域。默认是堆内存的1/2000。

-XX:MaxGCPauseMillis
设置期望达到的最大Gc停顿时间指标(JVM会尽力实现,但不保证达到)。默认值是200ms

-XX: ParallelGCThread
设置STS工作线程数的值。最多设置为8

-XX:ConcGCThreads
设置并发标记的线程数。将n设置为并行垃圾回收线程数(ParallelGCThreads)的1/4左右。

-XX: InitiatingHeapOccupancyPercent
设置触发并发GC周期的Java堆占用率阈值。超过此值,就触发GC。默认值是45。

使用场景

Parrllel Scavenge回收器

最大化应用程序吞吐量。该垃圾收集器会动态调整分区大小。

CMS回收器

最小化GC的中断和停顿时间。

G1回收器

面向服务端你,针对具有大内存、多处理器的机器。

最主要是低GC延迟,并具有大堆的应用程序提供解决方案。

特定情况下用来替换CMS收集器:

  • 50%的Java堆被活动数据占用
  • 对象分配率或老年代提升频率变化很大
  • GC停顿时间过长,0.5秒以上
  • G1 GC当JVM的GC现场处理速度慢时,系统会调用应用程序线程加速垃圾回收过程

总结

通过上文的分析,我们可以认识到每种垃圾收集器都有其独特的特性和适用场景,并没有绝对的优劣之分。不过,考虑到JDK版本升级的趋势,采用G1收集器对未来的版本兼容性更为有利。

在实际的生产环境中,通常无需手动调整大量参数,因为JVM能够进行自我调优以达到较好的性能状态。然而,熟悉常用的参数配置不仅有助于我们更深入地理解JVM的垃圾回收机制,还能在必要时对垃圾回收过程进行精细控制,从而优化应用的性能表现。

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

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

相关文章

【MySQL】双写、重做日志对宕机时脏页数据落盘的作用的疑问及浅析

众所周知,双写机制、重做日志文件是mysql的InnoDB引擎的几个重要特性之二。其中两者的作用都是什么,很多文章都有分析,如,双写机制(Double Write)是mysql在crash后恢复的机制,而重做日志文件&am…

【复现】大华 DSS 数字监控系统 任意文件读取漏洞_38

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 大华DSS是大华的大型监控管理应用平台,支持几乎所有涉及监控等方面的操作,支持多级跨平台联网等操作。 可…

2024年适合进入股市吗?北京想开股票账户找哪家证券公司交易佣金费用最低?

股市规则是指股票市场中的一系列规则和制度,用于监管和管理股票交易。以下是一些常见的股市规则: 证券法律法规:股市规则的基础是国家的证券法律法规,包括证券法、公司法等,用于规范股票发行、交易和上市等方面的法律规…

重生奇迹MU套装怎么配

汉斯的皮套装:冰之指环,皮护腿,皮盔,皮护手,皮靴,皮铠,流星槌 汉斯的青铜套装:青铜护腿,青铜靴,青铜铠 汉斯的翡翠套装:雷之项链,翡翠护腿,翡翠盔,翡翠铠,远古之盾 汉斯的黄金套装:火之项链,黄金护腿,黄金护手,黄金靴,黄金铠 …

代码随想录算法训练营DAY11 | 栈与队列 (2)

一、LeetCode 20 有效的括号 题目链接:20.有效的括号https://leetcode.cn/problems/valid-parentheses/ 思路:遇到左括号直接进栈;遇到右括号判断站顶是否有匹配的括号,没有就返回flase,有就将栈顶元素出栈&#xff1…

FANUC机器人示教器的菜单变成了图标,如何改成列表的形式?

FANUC机器人示教器的菜单变成了图标,如何改成列表的形式? 如下图所示,开机后按下MENU菜单键时,发现原来的列表形式变成了菜单图标的形式,同时在按F1-F5键时,提示:HMI模式-键不可用, …

向日葵案例解析:无外网接入,医疗设备如何进行远程售后运维

随着医学科学以及生物工程技术的高速发展,医院对于高端医疗设备如MR、CT、B超等高科技成像设备和放射治疗设备的需求激增。医学影像检查作为一种重要的手段,在许多疾病确诊过程中发挥着至关重要的作用。检查结果正确与否,直接影响临床医生对疾…

JS 引导动画

前言 引导动画是程序在某一时刻播放的动画,通常用于向用户介绍程序的功能和特点。 实现效果 实现方式 引导动画的实现方式有很多种,这里我使用的是 CSS 的 clip-path 属性。 技术选型 这里我为什么要选择 clip-path 属性而不是 mask 属性呢&#xf…

阿狸与小兔子的奇幻之旅

在很久很久以前,有一个遥远的国度,这个国度里生活着各种各样的动物,它们和谐共处,幸福快乐。在这个国度里,有一只聪明伶俐的小狐狸,名叫阿狸。 一天,阿狸在森林里散步时,遇到了一只正…

关于网络面试题汇总

什么是TCP/IP五层模型?它们的作用是啥?基于TCP/IP实现的应用(层协议)有哪些? TCP/IP五层模型,从上向下分别是: 应用层:应用程序本身,应用层的作用是负责应用程序之间的…

数据结构篇-05:哈希表解决字母异位词分组

本文对应力扣高频100 ——49、字母异位词分组 哈希表最大的特点就是它可以把搜索元素的时间复杂度降到O(1)。这一题就是要我们找到 “字母异位词” 并把它们放在一起。 “字母异位词”就是同一个单词中字母的不同组合形式。判断“字母异位词”有两个视角:1、所含字…

全面认识DOS系统

目录 一、DOS系统的功能 1.执行命令和程序(处理器管理) 2.内存管理 3.设备管理 4.文件管理 5.作业管理 二、文件与目录 三、文件类型与属性 1.系统属性(S) 2.隐含属性(H) 3.只读属性&#xff08…

初谈类和对象

文章目录 前言类的引入类的定义类的两种定义方式成员命名规则 类的访问限定符及封装访问限定符面试题封装 类的作用域类的实例化类对象模型计算类对象的大小 this指针this指针特性 前言 C语言是面向过程的,关注点是过程;而C面向的是对象,关注…

mysql-FIND_IN_SET查询优化

优化前 SELECTuser_id,user_name,real_name,PASSWORD,real_org_id,real_org_name,real_dept_id,real_dept_name, STATUS FROMsys_user WHEREis_del 0 AND find_in_set( lilong, login_user_account ) 优化后 SELECTuser_id,user_name,real_name,PASSWORD,real_org_id,real…

回归预测 | Matlab实现RIME-CNN-LSTM-Attention霜冰优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现RIME-CNN-LSTM-Attention霜冰优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现RIME-CNN-LSTM-Attention霜冰优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制&#xff0…

如何处理我们的文本数据成构建词表

我们拿到在拿到一堆语料数据,或者是在网络中爬取下来的文本数据如何处理成为模型能够训练的数据呢?这里有我们先经过停用词和按字分词的处理之后,得到的问答对文本数据,input_by_word.txt 和 target_by_word.txt 。其中&#xff0…

2024美赛预测算法 | 回归预测 | Matlab基于RIME-LSSVM霜冰算法优化最小二乘支持向量机的数据多输入单输出回归预测

2024美赛预测算法 | 回归预测 | Matlab基于RIME-LSSVM霜冰算法优化最小二乘支持向量机的数据多输入单输出回归预测 目录 2024美赛预测算法 | 回归预测 | Matlab基于RIME-LSSVM霜冰算法优化最小二乘支持向量机的数据多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效…

Docker进阶篇-Docker网络

一、描述 1、docker不启动,默认网络情况 查看网卡情况使用,ifconfig或者ip addr ens33:本机网卡 lo:本机回环网络网卡 virbr0:在CentoS 7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现 …

Web实战丨基于Django的简单网页计数器

文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面 本期内容 基于django的简单网页计数器 所需环境 pythonpycharm或vscodedjango 下载地址 https://download.csdn.net/download/m0_68111267/88795604 Django简介 Django 是一个用 Python 编写的高…

游戏找不到d3dcompiler_43.dll怎么办?多种5种解决方法分享

在运行游戏的过程中,系统遇到了一个关键性的问题,即无法成功找到名为“d3dcompiler_43.dll”的动态链接库文件。这一特定的dll文件对于游戏的正常启动和图形渲染至关重要,它的缺失可能会导致游戏无法运行或者画面无法正确显示。通常情况下&am…