`
wbj0110
  • 浏览: 1549833 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

(转)一次让人难以忘怀的排查频繁Full GC过程

    博客分类:
  • Java
阅读更多

 我们的Java应用因频繁FULL GC导致性能降低很多,经过多人的定位也没有结论,于是我自主请命,经过一天的研究终于搞定了,现把经验与大家共享,相关的gc日志如下:

4.758: [Full GC [PSYoungGen: 464K->0K(71936K)] [PSOldGen: 37949K->33994K(68672K)] 38413K->33994K(140608K) [PSPermGen: 33221K->33221K(66560K)], 0.1887540 secs] [Times: user=0.20 sys=0.00, real=0.19 secs]

32.324: [Full GC [PSYoungGen: 12025K->0K(176320K)] [PSOldGen: 57570K->65642K(128256K)] 69595K->65642K(304576K) [PSPermGen: 35548K->35548K(76544K)], 0.2467320 secs] [Times: user=0.22 sys=0.02, real=0.25 secs]

50.133: [Full GC [PSYoungGen: 20999K->0K(437248K)] [PSOldGen: 118647K->114524K(198528K)] 139647K->114524K(635776K) [PSPermGen: 49637K->49637K(84224K)], 0.3302180 secs] [Times: user=0.32 sys=0.00, real=0.33 secs]

149.586: [Full GC [PSYoungGen: 44223K->0K(411712K)] [PSOldGen: 190278K->185382K(296064K)] 234501K->185382K(707776K) [PSPermGen: 50674K->50208K(85248K)], 0.6151800 secs] [Times: user=0.62 sys=0.00, real=0.61 secs]

260446.223: [Full GC [PSYoungGen: 31393K->0K(436032K)] [PSOldGen: 1006486K->396428K(1021312K)] 1037880K->396428K(1457344K) [PSPermGen: 61093K->61093K(61440K)], 1.3636610 secs] [Times: user=1.36 sys=0.00, real=1.52 secs]

260630.161: [Full GC (System) [PSYoungGen: 40410K->0K(424768K)] [PSOldGen: 991397K->721859K(1021312K)] 1031808K->721859K(1446080K) [PSPermGen: 61100K->61100K(61440K)], 2.1272130 secs] [Times: user=2.14 sys=0.00, real=2.13 secs]

260720.146: [Full GC (System) [PSYoungGen: 4949K->0K(439360K)] [PSOldGen: 1004066K->833610K(1021312K)] 1009015K->833610K(1460672K) [PSPermGen: 61108K->61108K(61440K)], 2.8408660 secs] [Times: user=2.72 sys=0.10, real=2.84 secs]

260810.150: [Full GC (System) [PSYoungGen: 33459K->0K(463552K)] [PSOldGen: 949989K->245655K(1021312K)] 983448K->245655K(1484864K) [PSPermGen: 61117K->61088K(61184K)], 1.1344010 secs] [Times: user=1.12 sys=0.02, real=1.14 secs]

03430.144: [Full GC (System) [PSYoungGen: 7390K->0K(489024K)] [PSOldGen: 871871K->393481K(976704K)] 879262K->393481K(1465728K) [PSPermGen: 64306K->64295K(64640K)], 1.3848850 secs] [Times: user=1.34 sys=0.06, real=1.38 secs]

403794.982: [Full GC [PSYoungGen: 9352K->0K(454144K)] [PSOldGen: 963758K->426051K(991744K)] 973110K->426051K(1445888K) [PSPermGen: 64298K->64298K(64640K)], 1.3783510 secs] [Times: user=1.32 sys=0.06, real=1.38 secs]

404120.149: [Full GC (System) [PSYoungGen: 6846K->0K(467648K)] [PSOldGen: 943642K->440168K(991744K)] 950489K->440168K(1459392K) [PSPermGen: 64300K->64300K(64640K)], 1.1605070 secs] [Times: user=1.12 sys=0.04, real=1.16 secs]

404466.698: [Full GC [PSYoungGen: 9719K->0K(472768K)] [PSOldGen: 980355K->442899K(1021312K)] 990074K->442899K(1494080K) [PSPermGen: 64303K->64303K(64640K)], 1.1729280 secs] [Times: user=1.14 sys=0.04, real=1.18 secs]

 

经过日志分析,我找到两个突破点,重点关注红色字体部分的日志,分析过程如下: 

1
FULL GC前后Java堆大小有变化;经研究发现是由于Java应用JVM参数XMS设置为默认值,在我们的系统环境下,HotspotXms默认值为50M(-Xms默认是物理内存的1/64);每次GC时,JVM会根据各种条件调节Java堆的大小,Java堆的取值范围为[Xms, Xmx]。根据以上分析,修改Xms值与Xmx相等,这样就不会因为所使用的Java堆不够用而进行调节,经过测试后发现FULL GC次数从四位数减少至个位数。


2
)关键词“System”让我想到了System.gc调用,System.gc调用只是建议JVM执行年老代GC,而年老代GC触发FULL GCJVM会根据系统条件决定是否执行FULL GC,正因为系统条件不好判断,所以很难构造System.gc调用触发FULL GC,几经周折终于成功,当System.gc触发FULL  GC时都会有关键词System,而 JVM自动触发的FULL GC却不带关键词System,可以断定是Java应用存在“System.gc”代码。经过本次测试我也发现System.gc的真正含义,通俗言之,“System.gc” 就是FULL GC触发的最后一根稻草。 

从本次分析中,我们可以得出如下的经验:
 
1
Java应用的jvm参数XmsXmx保持一致,避免因所使用的Java堆内存不够导致频繁full gc以及full gc中因动态调节Java堆大小而耗费延长其周期。
 

2
)建议不要调用System.gc或者Runtime.getRuntime().gc,否则本次调用可能会成为压死骆驼的最后一根稻草。当然我们可以通过设置jvm参数禁止这种调用生效,但是除非特别有把握该参数有必要添加,否则不推荐这么设置。

https://my.oschina.net/goldwave/blog/168515

分享到:
评论

相关推荐

    难以忘怀的一件事作文(26篇).docx

    难以忘怀的一件事作文(26篇).docx

    难以忘怀的一幕作文.doc

    难以忘怀的一幕作文.doc

    中考语文满分作文那一幕我难以忘怀

    中考语文满分作文那一幕我难以忘怀

    难以忘怀的事作文.doc

    难以忘怀的事作文.doc

    什么是难以忘怀的?作文.doc

    什么是难以忘怀的?作文.doc

    难以忘怀初中七年级的作文.docx

    难以忘怀初中七年级的作文.docx

    2018年八年级语文下册小专题写作写难以忘怀的事习题课件语文版

    2018年八年级语文下册小专题写作写难以忘怀的事习题课件语文版

    Sword-finger-offer:leetcode的旅行将令人难以忘怀,而且令人难以置信-

    剑指优惠系列译文,去 种一棵树最好的时间是十年前,其次是现在

    求婚戒指盒图纸

    事实上,许多人为了求婚这件事,可能在几周前、甚至几个月前就在筹备了,虽然淮备的过程辛苦,但唯有这样日以继夜的辛苦才能让一切变得非常的特殊又难以忘怀。  而最近,有一位男子为了让自己的女友体验全世界最...

    做最好的自己(李开复)

    从南到北、从沿海到内地,我所走过的每一个校园、我所遇到的每一个年轻人,都让我感慨万千。从他们身上,我看到了朝气与活力,也看到了不安和躁动。我希望自己的成长经历和成功经验,可以为年轻人提供思想和方法上的...

    汽车游戏源代码以及游戏编程理论和实践报告

    每一代人总有一些游戏让他们难以忘怀,因为这些不止给我们带来了乐趣,同时也记录着我们那段难忘的记忆。在学习了游戏编程相关技术过后,趁着项目实践的机会,于是想做一个游戏来缅怀那些年少时候玩过的一些游戏,狂...

    基于博弈搜索树的中国象棋程序设计与实现

    国际象棋的计算机博弈已经有了很长的历史,并且经历了一场波澜壮阔的“搏杀”,“深蓝”计算机的胜利也给人类留下了难以忘怀的记忆。象棋程序的实现可以被分为人工智能和界面程序辅助两大部分。人工智能部分主要体现...

    如何设计网站,才能打动用户的心?

    富有趣味性的体验,往往可以给人带来愉悦的感受,而愉悦的感受往往让人难以忘怀。所以要想设计出让人印象深刻的网站,增添一些趣味性元素便是设计方法之一。JeremyGirard在SmashingMagazine上发表了...

    一步一步学asp.net ajax

    虽然学了1年多的asp.net,走了好多弯路,不过每一次体验都让人难以忘怀,马上要奔大四了,慢慢的开始总结,以前做过的东西,更多的是重新写以前的项目,以前虽然参加一些项目,但是感觉根本写的都是垃圾,堆砌功能,学校环境下...

    ZEN CART UGG模版

    仿ugg官网zencart免费模板,UGG Australia始于1978,来自美国南加州的高端时尚鞋履品牌,从最珍贵的原材料、最精致的制作工艺到最杰出的功能性与舒适度,无不传递着让人难以忘怀的羊毛皮体验和独一无二的奢华感受。

    创新AWE64GOLD声卡驱动程序免费版

    创新AWE64 GOLD驱动程序是一款可以有效解决创新AWE64 GOLD声卡在使用过程中出现的一些问题的驱动工具,本站提供了创新AWE64 gold驱动下载地址,有需要的朋友们可以前来下载使用。 亲耳聆听过AWE64 Gold声卡表现的...

    2010网页设计趋势

    为了给访问者造成难以忘怀的印象,2010的流行趋势将会是巨大的logo或者不相上下大小的标头。这种类型的标头会占据整 个屏幕,但是只有一个重要的短信息在上面。访问者不需要点击任何东西,只要把鼠标向下滑动。访问...

    Ueberschall_Dark_Guitar_Tunes_ELASTIK.z01

    音乐情绪总是令人难以忘怀,又有些阴险,营造出一种反常的氛围,充满了黑暗的悬念和令人不安的刺激。 实验性和复杂的吉他演奏 该库包含 5 个巨大的构建套件。它们由 3.6 GB 的样本数据和超过 650 个单独的循环和...

    Ueberschall_Dark_Guitar_Tunes_ELASTIK.z02

    音乐情绪总是令人难以忘怀,又有些阴险,营造出一种反常的氛围,充满了黑暗的悬念和令人不安的刺激。 实验性和复杂的吉他演奏 该库包含 5 个巨大的构建套件。它们由 3.6 GB 的样本数据和超过 650 个单独的循环和...

Global site tag (gtag.js) - Google Analytics