写在前边

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. 如果未达到吞吐量目标,请设置尽可能大的堆(小于物理可用内存)

参考

  • 《深入理解Java虚拟机高级特性与最佳实践》第2版
  • https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html

JVM参数 之 -XX:MaxGCPauseMillis 与 -XX:GCTimeRatio相关推荐

  1. 【JVM】JVM参数性能调优 -Xms -Xmx -Xmn -XX:NewRatio -XX:SurvivorRatio

    原文链接: http://unixboy.iteye.com/blog/174173/ 上图来自:https://blog.csdn.net/jakeswang/article/details/105 ...

  2. java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100/虚拟机调优

    转自:https://www.cnblogs.com/shanheyongmu/p/5775003.html JVM的堆的内存, 是通过下面面两个参数控制的 -Xms 最小堆的大小, 也就是当你的虚拟 ...

  3. java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结

    常见配置举例 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统 下,一般限制在1.5G ...

  4. JVM 参数使用总结

    1. 参数分类 1.标准参数  功能和输出的参数都是很稳定的 在未来的JVM版本中不会改变 可以使用java -help检索出所有的标准参数 2.X参数  非标准化参数 在未来的版本可能会改变 所有的 ...

  5. jvm参数调优_3_问题排查

    相关文章: http://www.importnew.com/21441.html(Java系列笔记(4) - JVM监控与调优 - Daniel·广 - 博客园) https://lanjingli ...

  6. JVM 参数配置及详解 -Xms -Xmx -Xmn -Xss 调优总结

    堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统 下,一般限制在1.5G~2G;64为 ...

  7. JVM 参数配置及详解 -Xms -Xmx -Xmn -Xss 调优总结(点赞收藏)

    堆大小设置 JVM 中最大堆大小有三方面限制: ①.相关操作系统的数据模型(32-bt还是64-bit)限制; ②.系统的可用虚拟内存限制; ③.系统的可用物理内存限制. 32位系统 下,一般限制在1 ...

  8. jboss4内存溢出处理(jboss 4.2.3.GA)及jvm参数大全

    jboss 出现异常: java.lang.OutOfMemoryError: PermGen space(jboss 4.2.3.GA) 在网上做了一番搜索得到一些相关的内容. PermGen sp ...

  9. JVM参数调优总结 -Xms -Xmx

    "-Xmx1024m -Xms1024m -Xmn512m -Xss256k"--Java运行参数(转) JVM的堆的内存, 是通过下面面两个参数控制的 -Xms 最小堆的大小, ...

最新文章

  1. 上海电信计划2015年用户带宽提高12.5倍
  2. SAP Commerce Cloud 里的 Media 概念简述
  3. Golang的单引号、双引号与反引号
  4. win32 注册表操作
  5. 转 JMeter之修改Sampler响应数据的编码格式
  6. 南京大学计算机学院冯新宇导师,中国科学技术大学计算机科学与技术专业硕士研究生导师冯新宇...
  7. SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本
  8. NTC功率型热敏电阻
  9. 【第一组】第十六次冲刺例会纪要
  10. connection reset by peer
  11. poi导出数据到word,带图片且图片数量不确定(能确定数量范围,这里是3-20张)
  12. XMPP与SIP-IM两大协议的对比
  13. Linux下查看CPU、内存、磁盘使用情况,并计算其使用率
  14. python画小动物_三分钟识别所有小动物!
  15. android 重映射按键,键盘重映射的终极教程 | MOS86
  16. 【企业数字化转型】网络协同和数据智能双螺旋驱动——活数据:流动创造价值...
  17. c++操作xml文件
  18. 软考中级系统集成项目管理工程师自学好不好过?
  19. 阿里入股B站,到底意味着什么?
  20. 配置内网DNS实现内部域名解析

热门文章

  1. 纯前端实现—抽奖小游戏
  2. SRPG游戏开发(五)第三章 绘制地图 - 二 绘制一张简单地图
  3. 计算机网络概述 网络的起源与发展
  4. 计算机毕业设计springboot教学事务流转与管理平台k0446源码+系统+程序+lw文档+部署
  5. 微软和NASA强强联手,重磅推出Python免费课程
  6. 视频教程-其实你还不懂Word-Office/WPS
  7. 基于单目视觉的同时定位与地图构建方法综述
  8. Java基础学习(11)---Java注解和反射
  9. Proxy returns “HTTP/1.1 407 Proxy Authentication Required
  10. ThreeJS之让一个模型围绕自己的轴心旋转