07_Z Garbage Collector (ZGC)

Z垃圾收集器(ZGC)是一种可扩展的低延迟垃圾收集器。ZGC可以在不超过一毫秒的情况下并发执行所有昂贵的工作,而不会停止应用程序线程的执行。它适用于需要低延迟的应用程序。暂停时间与正在使用的堆大小无关。ZGC适用于从几百兆字节到16TB的堆大小。

ZGC被设计为自适应且需要最小的手动配置。在Java程序执行期间,ZGC通过调整代大小、扩展GC线程数量和调整老年对象阈值动态适应工作负载。主要调优参数是增加最大堆大小。

ZGC有两个版本:新版分代版和传统非分代版。非分代ZGC是较旧的版本,它不利用代来优化运行时特性。鼓励用户转向使用更新的分代式ZGC。

使用命令行选项 -XX:+UseZGC -XX:+ZGenerational 可启用分代式ZGC。

使用命令行选项 -XX:+UseZGC 可启用非分代式ZGC。

设置堆大小

ZGC最重要的调优选项是设置最大堆大小,可以使用 -Xmx 命令行选项进行设置。由于ZGC是一种并发收集器,必须选择一个最大堆大小,使得堆可以容纳应用程序的存活集,并且在GC运行时有足够的余地来处理分配。所需的余地大小很大程度上取决于分配速率和应用程序的存活集大小。一般来说,给ZGC更多的内存越好。但同时,浪费内存是不可取的,因此关键在于找到内存使用和GC运行频率之间的平衡。

ZGC还有另一个与堆大小相关的命令行选项,名为 -XX:SoftMaxHeapSize。它可以用于设置Java堆能够增长到多大的软限制。ZGC会努力保持不超过这个限制,但仍然允许增长到最大堆大小以上。只有在需要防止Java应用程序停滞等待GC回收内存时,ZGC才会使用超过软限制的内存。例如,使用命令行选项 -Xmx5g -XX:SoftMaxHeapSize=4g 时,ZGC将以4GB作为其启发式算法的限制,但如果无法将堆大小保持在4GB以下,则仍然允许暂时使用高达5GB的内存。

将未使用的内存返回到操作系统

默认情况下,ZGC会释放未使用的内存,并将其返还给操作系统。这对于关注内存占用的应用程序和环境非常有用,但可能会对Java线程的延迟产生负面影响。您可以使用命令行选项 -XX:-ZUncommit 来禁用此功能。此外,不会释放内存以使堆大小缩小到低于最小堆大小(-Xms)。这意味着如果将最小堆大小(-Xms)配置为等于最大堆大小(-Xmx),则此功能将被隐式禁用。

您可以使用 -XX:ZUncommitDelay=<seconds>(默认值为300秒)来配置取消提交延迟。该延迟指定了内存在未使用多长时间后才能进行取消提交。


注意:允许垃圾回收在应用程序运行时提交和取消提交内存可能会对Java线程的延迟产生负面影响。如果极低的延迟是使用ZGC的主要原因,请考虑将 -Xmx 和 -Xms 设置为相同的值,并使用 -XX:+AlwaysPreTouch 在应用程序启动之前预取内存页。

使用大页

将ZGC配置为使用大页通常会带来更好的性能(以吞吐量、延迟和启动时间为代价),并且几乎没有实质性的劣势,除了设置稍微复杂一些。设置过程通常需要 root 权限,这就是为什么默认情况下它是禁用的。

在 Linux 上启用大页面

在Linux x86系统上,大页面(也称为“超大页面”)的大小为2MB。

假设您希望使用16GB的Java堆。这意味着您需要 16GB / 2MB = 8192 个超大页面。

堆至少需要16GB(8192页面)的内存分配给超大页面池。堆以及JVM的其他部分将使用大页面来存储各种内部数据结构(如代码堆和标记位图)。在此示例中,您将保留9216个页面(18GB),以便允许额外的2GB非Java堆内存分配使用大页。

配置系统的超大页面池以拥有所需数量的页面(需要root权限):

$ echo 9216 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

请注意,如果内核无法找到足够的空闲超大页面来满足请求,则以上命令无法成功执行。此外,请注意,内核可能需要一些时间来处理请求。在继续之前,请检查分配给池的超大页面数量,以确保请求成功并已完成:

$ cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

9216

在 Linux 上实现透明的大页面

与之前描述的显式使用大页不同的另一种选择是使用透明大页(transparent huge pages)。通常不建议对延迟敏感的应用程序使用透明大页,因为它往往会导致意外的延迟波动。然而,值得尝试一下,观察您的工作负载是否受到影响。

注意:在Linux系统上,启用透明大页的情况下使用ZGC需要内核版本大于等于4.7。

使用以下选项在虚拟机中启用透明大页:

-XX:+UseLargePages -XX:+UseTransparentHugePages

这些选项告诉JVM对其映射的内存发出madvise(...,MADV_HUGEPAGE)调用,这在使用透明大页的madvise模式下非常有用。

要启用透明大页,还需要通过启用madvise模式来配置内核。

$ echo madvise > /sys/kernel/mm/transparent_hugepage/enabled

ZGC使用shmem大页来管理堆内存,因此还需要配置以下内核设置:

$ echo advise > /sys/kernel/mm/transparent_hugepage/shmem_enabled

在比较不同GC的性能时,检查这些内核设置非常重要。一些Linux发行版会强制将/sys/kernel/mm/transparent_hugepage/enabled配置为always以启用私有页面的透明大页,同时将/sys/kernel/mm/transparent_hugepage/shmem_enabled保持默认值never。在这种情况下,除了ZGC外,所有GC都将使用透明大页来管理堆。更多信息请参阅《透明大页支持》(Transparent Hugepage Support)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五种主流数据库:窗口函数

SQL 窗口函数为在线分析系统&#xff08;OLAP&#xff09;和商业智能&#xff08;BI&#xff09;提供了复杂分析和报表统计的功能&#xff0c;例如产品的累计销量统计、分类排名、同比/环比分析等。这些功能通常很难通过聚合函数和分组操作来实现。 本文比较了五种主流数据库实…

嵌入式学习67-C++(多线程,自定义信号合槽,串口通信)

知识零碎&#xff1a; QmessageBox 报错提示框 GPS传感器获取到的 经纬度信息并不是真实的物理坐标&#xff0c;还需要转换 signals&#xff1a; …

【JAVA入门】Day03 - 数组

【JAVA入门】Day03 - 数组 文章目录 【JAVA入门】Day03 - 数组一、数组的概念二、数组的定义2.1 数组的静态初始化2.2 数组的地址值2.3 数组元素的访问2.4 数组遍历2.5 数组的动态初始化2.6 数组的常见操作2.7 数组的内存分配2.7.1 Java内存分配2.7.2 数组的内存图 一、数组的概…

234234235

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

周刊是聪明人筛选优质知识的聪明手段!

这是一个信息过载的时代&#xff0c;也是一个信息匮乏的时代。 这种矛盾的现象在 Python 编程语言上的表现非常明显。 它是常年高居编程语言排行榜的最流行语言之一&#xff0c;在国外发展得如火如荼&#xff0c;开发者、项目、文章、播客、会议活动等相关信息如海如潮。 但…

对XYctf的一些总结

对XYctf的一些总结 WEB 1.http请求头字段 此次比赛中出现的&#xff1a; X-Forwarded-For/Client-ip&#xff1a;修改来源ip via&#xff1a;修改代理服务器 还有一些常见的字段&#xff1a; GET&#xff1a;此方法用于请求指定的资源。GET请求应该安全且幂等&#xff0c…

QTday1

1、QT思维导图 2、自由发挥应用场景&#xff0c;实现登录 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->resize(642,493);this->setFixedSize(642,493);this->setWindowIcon(QIcon("D:/QTText/pictrue/qq.png…

Windows系统本地部署Net2FTP文件管理网站并实现远程连接上传下载

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

Vue入门到关门之Vue高级用法

一、在vue项目中使用ref属性 ref 属性是 Vue.js 中用于获取对 DOM 元素或组件实例的引用的属性。通过在普通标签上或组件上添加 ref 属性&#xff0c;我们可以在 JavaScript 代码中使用 this.$refs.xxx 来访问对应的 DOM 元素或组件实例。 放在普通标签上&#xff0c;通过 th…

CRE-LLM:告别复杂特征工程,直接关系抽取

CRE-LLM&#xff1a;告别复杂特征工程&#xff0c;直接关系抽取 提出背景CRE-LLM 宏观分析CRE-LLM 微观分析1. 构建指令集&#xff08;Instruction Design&#xff09;2. 高效微调大型语言模型&#xff08;Efficient Fine-Tuning on LLMs&#xff09;3. 方法讨论&#xff08;Di…

数据结构——链表专题2

文章目录 一、返回倒数第k 个节点二、链表的回文结构三、相交链表 一、返回倒数第k 个节点 原题链接&#xff1a;返回倒数第k 个节点 利用快慢指针的方法&#xff1a;先让fast走k步&#xff0c;然后fast和slow一起走&#xff0c;直到fast为空&#xff0c;最后slow指向的结点就…

智慧工地)智慧工地标准化方案(107页)

2.2 设计思路 对于某某智慧工地管理系统的建设&#xff0c;绝不是对各个子系统进行简单堆砌&#xff0c;而是在满足各子系统功能的基础上&#xff0c;寻求内部各子系统之间、与外部其它智能化系统之间的完美结合。系统主要依托于智慧工地管理平台&#xff0c;来实现对众多子系统…

动态规划算法:路径问题

例题一 解法&#xff08;动态规划&#xff09;&#xff1a; 算法思路&#xff1a; 1. 状态表⽰&#xff1a; 对于这种「路径类」的问题&#xff0c;我们的状态表⽰⼀般有两种形式&#xff1a; i. 从 [i, j] 位置出发&#xff0c;巴拉巴拉&#xff1b; ii. 从起始位置出…

《自动机理论、语言和计算导论》阅读笔记:p428-p525

《自动机理论、语言和计算导论》学习第 14 天&#xff0c;p428-p525总结&#xff0c;总计 98 页。 一、技术总结 1.Kruskal’s algorithm(克鲁斯克尔算法) 2.NP-Complete Problems p434, We say L is NP-complete if the following statements are true about L: (1)L is …

AI预测体彩排3第3套算法实战化赚米验证第2弹2024年5月6日第2次测试

由于今天白天事情比较多&#xff0c;回来比较晚了&#xff0c;趁着还未开奖&#xff0c;赶紧把预测结果发出来吧~今天是第2次测试~ 2024年5月6日排列3预测结果 6-7码定位方案如下&#xff1a; 百位&#xff1a;2、3、1、5、0、6 十位&#xff1a;4、3、6、8、0、9 个位&#xf…

软件公司为什么很少接二开项目?

前言 很多企业由于原有项目还在继续运营&#xff0c;但原有技术公司不想再合作或者不想再维持整个技术团队等原因&#xff0c;就需要找一个新的软件公司继续维护原有软件系统。但是一接触往往发现很多软件公司拒绝接手第三方的软件项目&#xff0c;这究竟是什么原因呢&#xff…

六淳科技IPO终止背后:十分着急上市,大额分红,实控人买豪宅

华西证券被暂停保荐业务资格6个月的影响力逐渐显现。 近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;东莞六淳智能科技股份有限公司&#xff08;下称“六淳科技”&#xff09;及其保荐人撤回上市申请材料。因此&#xff0c;深圳证券交易所决定终止对其首次公开发行…

暂不要创业,谁创业谁死

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 卢松松视频号会员专区有个会员提问&#xff0c;我感觉挺有代表性的&#xff0c;写成公众号文章&#xff0c;分享给大家&#xff1a; 松哥&#xff0c;我花了太多时间在思考上&#xff0c;而一直没有行动&#xff…

ESG视角下的多期DID构建(2009-2022年)4.5万+数据

随着ESG信息越来越受到重视&#xff0c;一些第三方评级机构开始推出ESG评级产品&#xff0c;目前在第三方数据库能够查到华证、富时罗素、商道融绿、社会价值投资联盟以及Wind自有的ESG评级数据等。其中&#xff0c;商道融绿是中国最早发布ESG评级数据的机构&#xff0c;也是国…

一文读懂Vue生命周期(Vue2)

一文读懂Vue生命周期&#xff08;Vue2&#xff09; 目录 一文读懂Vue生命周期&#xff08;Vue2&#xff09;1 前言2 Vue生命周期2.1 基本生命周期2.1.1 8个生命周期2.1.2 案例 2.2 组件生命周期2.2.1 父子生命周期2.2.2 案例 2.3 keep-alive生命周期2.3.1 案例 2.4 其他 3 总结…
最新文章