一、Throughput收集器(吞吐量)
-XX:+UseParallelGC
-XX:+UseParallelOldGC

*参数调整:通过调整堆大小,减少GC停顿时间,增大吞吐量
增强堆大小可以减少Full GC频率,但却会增加停顿时间
1.手动调整
-Xmn
-Xms
-XX:NewRatio=N
手动指定堆内存大小和代空间比例,一般要多次试验
2.自动参数调整
-XX:MaxGCPauseMillis=N 可接受最大停顿时间
-XX:GCTimeRatio=N 可接受GC时间占比(目标吞吐量) 吞吐量=1-1/(1+N)
步骤:
1.MaxGCPauseMillis优先级高,JVM会自动调整堆大小和代空间值,以期满足MaxGCPauseMillis
2.当MaxGCPauseMillis满足后,JVM会增大堆大小,直到满足GCTimeRatio
3.当MaxGCPauseMillis和GCTimeRadio都满足后,JVM会尽可能以最小堆大小来实现这两个指标参数
Throughput一般不考虑响应时间,所以一般不设置-XX:MaxGCPauseMillis

一般吞吐量在95%以上就算比较好的了,对于可用内存很少的环境可以降低指标

二、CMS收集器(响应时间)
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
CMS收集器会对年轻代进行并发GC, 会有stw(stop-the-world)
CMS收集器会对老年代进行并发GC, CMS
如果有必要,CMS会发起单线程的Full GC, 这个操作十分耗时

Full GC原因:
并发模式失效:新生代发生GC时,老年代没有足够内存容纳晋升对象
晋升失败:老年代虽然有足够容纳晋升对象的内存,但内存都是碎片,导致晋升失败

*参数调整:避免并发模式失效和晋升失败
-XX:+UseCMSInitiatingOccupancyOnly 根据Old内存使用阈值决定何时CMS, 默认是false,会用更复杂的算法决定何时CMS
-XX:CMSInitingOccupancyFraction=N default N=70,老年代内存使用70%时就发生CMS
N设置太大,容易并发模式失效;N太小,CMS过于频繁,而CMS也会导致stop-the-world
-XX:ConGCThreads=N GC的线程会100%占用CPU,如果发生并发模式失败,而N还小于CPU核心数,此时可以增加N。
如果没有发生并发模式失败,此时可以减少N,以让应用程序有更多CPU执行

Perm持久代GC调优
持久代内存满了会引发Full GC
持久代GC调优主要是让持久代也进行CMS收集
-XX:+CMSPermGenSweepingEnable 使持久代使用CMS收集器
-XX:+CMSClassUnloadingEnable 使持久代能真正释放不再被使用的类。默认是不会释放类的元数据的

增量式CMS:普通CMS线程会占用100%的cpu负载,增量式CMS会让出一定CPU负载给应用线程
这适合在单核CPU使用,显然已经没啥用处了

JVM调优-GC参数的更多相关文章

  1. JVM调优常用参数和注意点备忘录

    本文主要是工作过程中总结的一些jvm调优的参数和注意的地方,作为一个备忘录,先占个坑,有时间在来细化具体的实例. gc日志是覆盖的方式如果文件名字固定会导致上一次被覆盖可以采用这个-Xloggc:ba ...

  2. JVM调优及参数设置

    (1)参数 -Xms:初始堆大小 -Xmx :最大堆大小 此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn :年轻代大小 整个堆大小=年轻代大小 + 年老代大小 + 持 ...

  3. jvm调优具体参数配置

    3.JVM参数 在JVM启动参数中,可以设置跟内存.垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能.通过设置 ...

  4. JVM调优常用参数配置

    堆配置 -Xms:初始堆大小 -Xms:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3表示年轻代和年老代比值为1:3,年轻代占 ...

  5. JVM 调优 —— GC 长时间停顿问题及解决方法

    零. 简介 垃圾收集器长时间停顿,表现在 Web 页面上可能是页面响应码 500 之类的服务器错误问题,如果是个支付过程可能会导致支付失败,将造成公司的直接经济损失,程序员要尽量避免或者说减少此类情况 ...

  6. JVM调优常用参数总结

    GC通用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:T ...

  7. JVM调优常用参数

    JVM常用参数配置 -Xmx2048m 最大堆大小 -Xms1024m 初始堆大小 -Xmn1024m 年轻代大小 -XX:SurvivorRatio=8 Eden区与Survivor区的大小比值,设 ...

  8. java面试-JVM调优和参数配置,如何查看JVM系统参数默认值

    一.JVM的参数类型: 1.标配参数: java -version java -help 2.X参数: -Xmixed 混合模式(先编译后执行) -Xint  解释执行 -Xcomp 第一次使用就编译 ...

  9. JVM调优参数、方法、工具以及案例总结

    这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数.JVM调优方法(流程) ...

随机推荐

  1. Windows中几个内存相当的指标

    以下几个内存大小相当: IS:虚拟内存任务管理器:提交内存进程对象上的:PrivateMemorySize64,性能计数器:Process\Private Bytes

  2. iOS开发-本地存储(偏好设置,Plist,归档)

    1.   NSUserDefaults //TODO: 1.NSUserDefaults NSUserDefaults类除了可以存储数组.字典.NSdata外,还可以直接存储OC基本类型属性.但是不能 ...

  3. 取消Eclipse等号、分号、空格代码自动补全

      本文主要参考了以下文章 http://www.cnblogs.com/a-zx/p/3388041.html 本文基于 Eclipse Java EE IDE for Web Developers ...

  4. Yii1.1.16学习记录

    最近工作中用到Yii框架,为此专门在网上找了些相关教程学一下,尽管教程比较老,但学完后至少对Yii框架有了基本了解,特别是widget的使用,感觉Yii真的很强大. 一.框架介绍与安装 框架源码下载 ...

  5. java解析复杂json:JSONObject 和 JSONArray的使用

    在正式解析之前,我们需要下载解析Json所需要的jar包,一共有7个. 下载地址如下:https://download.csdn.net/download/zai_xia/10374080 大家也可以 ...

  6. IP负载均衡

    推荐一篇关于LVS的好文: https://www.cnblogs.com/gaoxu387/p/7941381.html 一.原博主要内容: 1.概述 IP负载均衡:四层负载,是基于IP+端口的负载 ...

  7. 转:更改SQLServer实例默认字符集

    需求 安装数据库时,将字符集安装成了“SQL_Latin1_General_CP1_CI_AS”,现在需要将其更改为“Chinese_PRC_CI_AS”.   方法 重新生成系统数据库 ,然后还原配 ...

  8. 字符串通过在配置文件配置三个key来进行加密解密

    在这里和大家分享一个加密util,相对于md5加密相信大家都已经很熟悉了吧,md5是不可逆的一种加密方式,虽说不可逆但是网上已经有了破解的方法,我这边分享一个免费的破解 网址给大家:https://w ...

  9. 【PAT】B1079 延迟的回文数(20 分)

    用了柳婼大佬博客的思路,但实现有不同 没有用string所以要考虑字符串末尾的'\0' 用的stl中的reverse逆置字符串 #include<stdio.h> #include< ...

  10. win7系统开机后电脑桌面背景变黑的解决方法

    自从微软放弃了对win7系统的维护更新,一些BUG也就慢慢出现了,最近用户反映,开机后电脑桌面背景变黑,即使重新换了桌面背景,还是会出现这种情况.下面小编就来告诉大家怎样解决这一问题. 1.点击开始菜 ...