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是大华的大型监控管理应用平台,支持几乎所有涉及监控等方面的操作,支持多级跨平台联网等操作。 可…

13:使用1个按键使静态数码管数值加1

使用1个按键使静态数码管数值加1 1、按键检测2、完整的按键检测 1、按键检测 当第一次按下K1时&#xff0c;静态数码管显示数值为1&#xff0c;当第二次按下时&#xff0c;数码管数值变为2&#xff0c;以此类推… #include <REGX51.H>sbit K1 P1^0;/*******定义一个延…

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

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

重生奇迹MU套装怎么配

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

暴雨信息:算法无处不在,但切忌“算法为王”

在这个信息时代&#xff0c;算法无处不在&#xff0c;几乎触及我们工作生活中的每个角落。我们似乎已经被算法包围&#xff0c;很多人担心社会的运转会“以算法为王”&#xff0c;人类会成为“云奴隶”。其实&#xff0c;尽管算法影响广泛&#xff0c;但它并不决定一切。算法本…

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

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

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

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

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

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

JS 引导动画

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

阿狸与小兔子的奇幻之旅

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

面试经典150题(96-100)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第五十五天&#xff09;完成了5道(96-100)150&#xff1a; 96.&#xff08;74. 搜索二维矩阵&#xff09;题目描述&#xff1a; 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左…

关于网络面试题汇总

什么是TCP/IP五层模型&#xff1f;它们的作用是啥&#xff1f;基于TCP/IP实现的应用&#xff08;层协议&#xff09;有哪些&#xff1f; TCP/IP五层模型&#xff0c;从上向下分别是&#xff1a; 应用层&#xff1a;应用程序本身&#xff0c;应用层的作用是负责应用程序之间的…

【Git系列】修改远程分支名

场景&#xff1a;修改一个别人都在使用的远程分支名称&#xff0c;该怎么处理呢&#xff1f; 思路&#xff1a;基于当前要改名的分支创建一个新的一摸一样分支&#xff0c;写好新建分支名作为修改名&#xff0c;然后推送到远程&#xff0c;接着删除远程要改名的旧的分支&#x…

vue3项目中如何实现模块的自动导入

vue2和vue3一个很重要的代码区别就是从vue2对象化完整引入到函数化按需引入。从而解决了需要什么就引入什么的按需引入操作功能。 然而这一代码操作模式却也引出了后续繁琐代码的书写结构。 虽然现在绝大数开发工具都对未引入的内容进行语法错误提示&#xff0c;并提供快速修复…

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

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

全排列 - 三种形式

全排列 - 三种形式 思路 - 回溯 「路径」&#xff0c;记录已经做过的选择「选择列表- 多叉树」&#xff0c;表示当前可以做出的选择&#xff0c;在前序和后序位置操作。 前序位置&#xff0c;做选择进入下一层决策树后序位置&#xff0c;撤销选择 「结束条件」 遍历到树的底层…

全面认识DOS系统

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

初谈类和对象

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

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…