GC优化策略

为什么要优化 ?

在讲为什么要优化之前先讲一下两个重要的优化目标,因为大部分的优化都是围绕着吞吐量及最大暂停时间进行的。如下,描述:

  • 吞吐量
    吞吐量表示 垃圾回收线程执行花费的时间与实际程序线程执行任务的时间之比。比如,在老板眼中的吞吐量就是,你一个小时中有多少个小时是为他工作的!(而不是带薪刷知乎)。
    在大部分的服务器系统以及部分批处理的任务程序中,吞吐量当然是一个更加重要的指标。

  • 最大暂停时间
    由于程序JVM每隔一段时间都要进行一次GC,因为要让出资源所以会让程序的工作线程都挂起。所以最大暂停时间就是最长的GC 所花费的时间。在一般的金融或者c端产品中,为了更好的用户体验,对最大暂停时间的要求会比吞吐的更高。

所以现在当有人问起:你会GC优化吗? 你就可以回答:你要优化吞吐呢,还是最大延时呢!?

如何优化

优化最大吞吐量

吞吐量的优化目的在于减少GC的次数与总GC时间,通过减少GC的次数会让CPU减少因为GC带来的线程切换提高了执行效率。
步骤:

  1. 通过jstat 观察大部分的GC是发生在什么区之下。
  2. 通过加大对应GC频繁的generation的大小来减少GC次数。
    可以通过加大整个堆的大小。或者是通过-XX:NewRatio,
    -XX:NewSize等命令来修改年轻代,老年代的分配情况。
  3. 通过选择 UserParallelOldGC 来使用更高效率的高吞吐收集器 parallel compacting collector
优化最大暂停时间

步骤:

  1. 由于较大的暂停时间一般都是触发FullGC的时候才会出现,所以通过减小各generation的大小来增加GC次数,从而降低时间。
  2. 通过选择 CMS 或者G1 这些Concurrent 收集器来减低GC的时间。
不需要脑子的优化

通过设置-XX:+UseParallelGC选择使用parallel收集器,并且设置
-XX:GCTimeRatio=n(gc时间之比)以及-XX:MaxGCPauseMillis=n(最大暂停时间) 然后即可拿起薯片等待收集器自行调整堆大小来达到设置的目标,但是如果两个参数都设置,会以吞吐量为首要目标。

-XX:GCTimeRatio =nnn ,这里的rito的计算公式是:1/(1+nnn)。 比如当 -XX:GCTimeRatio=19 那么目标就是 5% 的垃圾回收时间

实例

以下展示两个仅仅通过修改堆大小及分配后的gc状态,实现通过调优之后减少了GC次数时间,提高吞吐。

before :

仅配置了堆大小为2G

S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
3584.0 3584.0 2462.4 0.0 691712.0 621990.9 1610240.0 661094.9 57216.0 56112.3 6784.0 6483.1 9996 70.672 2 0.102 70.774

after:

第一版修改 设置总堆大小为4G,young generation : old generation = 2:1

S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
4608.0 5120.0 0.0 3359.5 2062336.0 2011317.2 2072576.0 386632.2 59096.0 58032.5 6912.0 6629.8 3225 29.559 2 0.110 29.668

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容