[转帖]小知识点 之 JVM -XX:MaxGCPauseMillis 与 -XX:GCTimeRatio

知识点,jvm,xx,maxgcpausemillis,gctimeratio · 浏览次数 : 0

小编点评

**Parallel Scavenage GC 参数** **-XX:MaxGCPauseMillis** * 调整GC最大停顿毫秒数,设置默认值为nnn。 * 当GC停顿时间超过nnn毫秒时,VM将降低吞吐量以减少暂停时间。 **-XX:GCTimeRatio** * 设定GC运行时间的比率,设置默认值为100。 * 降低GC暂停时间比率,延长应用程序执行时间。 **其他参数** * 其他与GC相关的参数,如**-XX:MaxHeapSize**、**-XX:NewGCThreadCount**等,可根据实际需求进行调整。

正文

https://www.cnblogs.com/hellxz/p/14056403.html

 

写在前边

JVM调优更多是针对不同应用类型及目标进行的调整,往往有很大的实验成份,通过实验来针对当前应用设置相对合适的参数,提高应用程序的性能与稳定性

最近在复习JVM,Parallel Scavenage GC收集器是一个新生代、复制算法、并行多线程收集器,主要目标是控制吞吐量与GC的停顿时间。

Parallel Scavenage GC提供两个参数 -XX:MaxGCPauseMillis 与 -XX:GCTimeRatio 自动调整堆大小与其他与GC相关的参数,达到GC调优的目的

-XX:MaxGCPauseMillis=nnn

表示每次GC最大的停顿毫秒数,VM将调整Java堆大小和其他与GC相关的参数,以使GC引起的暂停时间短于nnn毫秒,尽可能地保证内存回收花费时间不超过设定值。

请注意,这可能会导致VM降低整体吞吐量(吞吐量=运行用户代码时间/VM总运行时间),并且在某些情况下,VM将无法达到所需的暂停时间目标。

默认情况下,VM没有暂停时间目标值。GC的暂停时间主要取决于堆中实时数据的数量与实时数据量。

该参数应谨慎使用。太小的值将导致系统花费过多的时间进行垃圾回收。原因是为满足最大暂停时间,VM将设置更小的堆,以存储相对少量的对象,来提升回收速率,会导致更高频率的GC。

-XX:GCTimeRatio=nnn

表示希望在GC花费不超过应用程序执行时间的1/(1+nnn),nnn为大于0小于100的整数。

换句话说,此参数的值表示运行用户代码时间是GC运行时间的nnn倍。

举个官方的例子,参数设置为19,那么GC最大花费时间的比率=1/(1+19)=5%,程序每运行100分钟,允许GC停顿共5分钟,其吞吐量=1-GC最大花费时间比率=95%

默认情况下,VM设置此值为99,运行用户代码时间是GC停顿时间的99倍,即GC最大花费时间比率为1%

选择此参数应对server端程序是很适合的,设置过大会使堆变大,直至接近最大堆设置的值。

官方建议策略

  1. 尽量不设置最大堆,选择合适的目标吞吐量
  2. 如果可以达到吞吐量目标,但是暂停时间太长,请选择一个暂停时间目标进行折衷(以降低吞吐量为代价)
  3. 如果未达到吞吐量目标,请设置尽可能大的堆(小于物理可用内存)

参考

与[转帖]小知识点 之 JVM -XX:MaxGCPauseMillis 与 -XX:GCTimeRatio相似的内容:

[转帖]JVM系列之:你知道Java有多少种内存溢出吗

本文为《深入学习 JVM 系列》第二十五篇文章 Java内存区域 关于这部分内容大多来源于《深入理解Java虚拟机》一书。 Java 运行时数据区域(JDK8)如下图所示: 关于上述提到的线程共享和线程隔离区域,下图做详细讲解: 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的

[转帖]【网络小知识】之TCP IP 五元组(five-tuple/5-tuple)

为什么要分享TCP IP 5元组(five-tuple/5-tuple的知识? 最近在进行深度分析过程中,听到某些资深人士提到了5元组这个概念,觉得很高大尚,去搜索了一圈,发现都是些非常浅显的知识,对于tcp ip 5元组,7元组有什么用没有提及,也没有五元组的英文,导致英文资料检索过程中饶了一圈。

[转帖]电脑小白必读的CPU基础知识大全,CPU知识科普最新全面讲解

http://www.lotpc.com/yjzs/9374.html 对于电脑来说,CPU是最核心的硬件之一,相当于人体的大脑,它决定着一台电脑的运算速度,无论是台式机还是笔记本,CPU的选购至关重要。相信大家对CPU还不是很了解,下面装机之家分享一下CPU知识科普最新全面讲解,想要学习CPU知识

[转帖]linux中top命令显示不全怎么解决

https://www.yisu.com/zixun/697775.html 这篇“linux中top命令显示不全怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux中to

[转帖]Linux小知识:sudo su和su的区别

https://www.cnblogs.com/jiading/p/11717388.html su是申请切换root用户,需要申请root用户密码。有些Linux发行版,例如ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码。 而s

[转帖]DRAM刷新refresh相关知识归类-基础小知识(三)

https://www.likecs.com/show-204642182.html#sc=1621 文章目录 一、背景小知识 1.1 DRAM的层次结构 1.2 刷新要求 1.3 DRAM存储芯片的读写时序 1.4 刷新方式分类 参考文献 RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)

【转帖】【奇技淫巧】Linux | 统计网络-netstat

theme: condensed-night-purple 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 在构建生产服务器时,我们有的时候需要统计网络接口状况,比如TCP、UDP端口开放的情况,这时我们需要用到netstat。 一、命令介绍 netstat命令最主要的功能是对网络信息进

[转帖]linux内存分析工具pmap

👦博主介绍:程序员悟啦(乌拉~) ✍个人仓库:码云 🔊座右铭:“懒”对一个人的毁灭性有多大,早起的重要性就多大。 📚免责声明:文章由博主原创、部分文章整理于网络,仅供学习和知识分享 💬相遇是缘,既然来了就拎着小板凳🪑坐下来一起唠会儿👁‍🗨,如果在文中有所收获,请别忘了一键三连,动动你发

[转帖]小技巧!如何用 systemtap 排查问题

https://www.modb.pro/db/79444 霸爷博客,干货满满。有两篇文章现在还记得,《Linux下如何知道文件被哪个进程写》[1]和《巧用Systemtap注入延迟模拟IO设备抖动》[2],周末突然想起来,发现能看懂了:) 本文虽然说是小技巧,可是难度一点也不低 ^_^ 什么是 s

[转帖]发布策略知多少?蓝绿 / 红黑 / 灰度 / 滚动...

https://my.oschina.net/koderover/blog/5608477 随着市场的快速发展,产研团队需要更快迭代需求、更高频发布变更。但由于无法完全模拟线上流量和真实场景,频繁发布可能导致整个系统风险。当出现一个小问题,就可能导致服务的可用性受损、用户体验甚至客户服务受到影响。而