??xml version="1.0" encoding="utf-8" standalone="yes"?>av在线资源,亚洲精品永久免费,成人永久免费http://www.aygfsteel.com/jjshcc/category/54857.htmlzh-cnThu, 23 Jul 2015 16:16:43 GMTThu, 23 Jul 2015 16:16:43 GMT60java GC日志参数讄http://www.aygfsteel.com/jjshcc/archive/2015/07/23/426391.htmlEric_jiangEric_jiangThu, 23 Jul 2015 06:30:00 GMThttp://www.aygfsteel.com/jjshcc/archive/2015/07/23/426391.htmlhttp://www.aygfsteel.com/jjshcc/comments/426391.htmlhttp://www.aygfsteel.com/jjshcc/archive/2015/07/23/426391.html#Feedback0http://www.aygfsteel.com/jjshcc/comments/commentRss/426391.htmlhttp://www.aygfsteel.com/jjshcc/services/trackbacks/426391.html增加GC相关选项Q?/p>
  1. -verbose:gc
  2. -XX:+UseGCLogFileRotation
  3. -XX:NumberOfGCLogFiles=5
  4. -XX:GCLogFileSize=512K
  5. -XX:+PrintGCDetails
  6. -XX:+PrintGCTimeStamps
  7. -XX:+PrintGCDateStamps
  8. -XX:+PrintTenuringDistribution
  9. -XX:+PrintGCApplicationStoppedTime
  10. -Xloggc:/var/app/log/Push-server/gc.log
  1. 如果不能定所需内存Q用自动jvm自动调优Q?/li>
  2. 大致定所需内存后,使用-Xmx -Xms讄堆大;
  3. 观察GC log定FullGC后剩余堆大小Q即为活跃数据大)(j)Q?/li>
  4. 整个堆大宜年代活跃数据大的3-4倍;
  5. 怹带大应该比怹带活跃数据大1.2~1.5倍;
  6. 新生代空间应该ؓ(f)老年代空间活跃数据的1~1.5倍;
  7. 通过top命o(h)观察栈占用空间、直接内存占用空_(d)军_所需机器内存大小Q?/li>
  8. 新生代大决定了(jin)Minor GC的周期和旉Q羃短新生代大小可以减少停顿旉Q但是增加了(jin)GC频率Q在调整新生代大时Q尽量保持老年代大不变;
  9. 老年代大不应该于z跃数据?.5倍;新生代空间至ؓ(f)java堆大的10%Q增加堆大小Ӟ注意不要过可用物理内存敎ͼ
  10. 从throughput攉器迁UdCMSӞ需要将老年代空间增?0%~30%Q?/li>
  11. 新生代分为Eden和Survivor两部分,Survivor可以通过-XX:SurvivorRatio=xx来控Ӟ对应的大ؓ(f)-Xmn<value>/(ratio+2)Q?/li>
  12. 通过-XX:MaxTenuringThreshold=<n>来指定晋升阈|q龄Q,n?~15之间Q?/li>
  13. 期望SurvivorI间为剩余d?gu)zd象大的2?age=1Q?/li>
  14. 注意调节Survivor大小Ӟ保持Eden大小不变Q?/li>
  15. 如果SurvivorI间_大,且对象大部分q未到达老年代,那么可以将晋升q纪指定的够大Q?5Q。在Eden与Survivor之间复制和CMS老年代空间压~之_(d)我们宁愿选择前者;
  16. CMS必须能以对象从新生代提升到老年代的同等速度对老年代中的对象进行收集,否则Q就?x)失速;
  17. 如果观察?concurrent mode failures'Q意味着失速已l发生,必须减少-XX:CMSInitiatingOccupancyFraction=<percent>的|
  18. 使用上述选项的同Ӟ最好同时?code style="border-bottom: 0px; border-left: 0px; padding-bottom: 2px; background-color: rgb(214,219,223); padding-left: 4px; padding-right: 4px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; white-space: nowrap; color: rgb(44,62,80); font-size: 14px; border-top: 0px; border-right: 0px; padding-top: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px">-XX:+UseCMSInitiatingOccupancyOnlyQ强制用该比例,该比例的大小应该大于老年代占用空间和z跃数据大小之比Q一般而言老年代大?该比?gt;1.5*老年代活跃数据大?/code>Q?/li>
  19. 使用-XX:+ExplicitGCInvokesConcurrentAndUnloadsCloasses可以使用CMSq行昑ּ垃圾回收Q?code style="border-bottom: 0px; border-left: 0px; padding-bottom: 2px; background-color: rgb(214,219,223); padding-left: 4px; padding-right: 4px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; white-space: nowrap; color: rgb(44,62,80); font-size: 14px; border-top: 0px; border-right: 0px; padding-top: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px">System.gc())Q通过-XX:+DisableExplicitGC关闭昄垃圾回收Q慎用)(j)Q?/li>
  20. 使用-XX:+CMSClassUnloadingEnabled打开怹带垃圑֛Ӟ使用-XX:+CMSPermGenSweepingEnabled打开CMSҎ(gu)久带的扫描;使用-XX:CMSInitiatingPermOccupancyFraction=<perscent>Ȁzd收比例阈|
  21. 使用-XX:ParallelGCThreads=<n>控制扫描U程敎ͼ使用-XX:+CMSScavengeBeforeRemark强制重新标记前进行一ơMinorGCQ如果由大量的引用对象或可终l对象要处理Q?code style="border-bottom: 0px; border-left: 0px; padding-bottom: 2px; background-color: rgb(214,219,223); padding-left: 4px; padding-right: 4px; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; white-space: nowrap; color: rgb(44,62,80); font-size: 14px; border-top: 0px; border-right: 0px; padding-top: 2px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px">-XX:+ParallelRefProcEnabledQ?/li>
  22. CMS包括Minor GC所带来的开销应该于10%Q?/li>
  23. 如果~少长时间调优的条gQ安全v见,可以使用G1Q仅讄如下参数卛_Q?/li>
  1. -d64
  2. -Xmx5g
  3. -Xms5g
  4. -XX:PermSize=100m
  5. -XX:MaxPermSize=100m
  6. -XX:MaxDirectMemorySize=1g
  7. -XX:+UseG1GC
  8. -XX:MaxGCPauseMillis=80

G1不必明确讄新生代大,其自动调优也十分可靠Q对于停时间往往在长旉q行后可以达到预期效果;对吞吐量优先的应用,可能不是那么明显?/p>

Eric_jiang 2015-07-23 14:30 发表评论
]]>
JVM监控与调?/title><link>http://www.aygfsteel.com/jjshcc/archive/2015/07/10/426139.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Fri, 10 Jul 2015 01:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/jjshcc/archive/2015/07/10/426139.html</guid><wfw:comment>http://www.aygfsteel.com/jjshcc/comments/426139.html</wfw:comment><comments>http://www.aygfsteel.com/jjshcc/archive/2015/07/10/426139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jjshcc/comments/commentRss/426139.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jjshcc/services/trackbacks/426139.html</trackback:ping><description><![CDATA[     摘要: JVM监控与调?光说不练假把式,学习(fn)Java GC机制的目的是Z(jin)实用Q也是Z(jin)在JVM出现问题时分析原因ƈ解决之。通过学习(fn)Q我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优?点上。下面就针对这3点进行学?fn)?nbsp;    Q如果?zhn)对Java的内存区域划分和内存回收机制不明确Q那在阅L文前Q请先阅L的前一博客《Javap?..  <a href='http://www.aygfsteel.com/jjshcc/archive/2015/07/10/426139.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jjshcc/aggbug/426139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jjshcc/" target="_blank">Eric_jiang</a> 2015-07-10 09:03 <a href="http://www.aygfsteel.com/jjshcc/archive/2015/07/10/426139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GC 日志分析http://www.aygfsteel.com/jjshcc/archive/2015/06/18/425769.htmlEric_jiangEric_jiangThu, 18 Jun 2015 03:28:00 GMThttp://www.aygfsteel.com/jjshcc/archive/2015/06/18/425769.htmlhttp://www.aygfsteel.com/jjshcc/comments/425769.htmlhttp://www.aygfsteel.com/jjshcc/archive/2015/06/18/425769.html#Feedback0http://www.aygfsteel.com/jjshcc/comments/commentRss/425769.htmlhttp://www.aygfsteel.com/jjshcc/services/trackbacks/425769.html不同的JVM?qing)其选项?x)输Z同的日志?/strong>

GC 日志

生成下面日志使用的选项Q?span class="Apple-converted-space"> -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:d:/GClogs/tomcat6-gc.log?/p>

4.231: [GC 4.231: [DefNew: 4928K->512K(4928K), 0.0044047 secs] 6835K->3468K(15872K), 0.0045291 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
 
4.445: [Full GC (System) 4.445: [Tenured: 2956K->3043K(10944K), 0.1869806 secs] 4034K->3043K(15872K), [Perm : 3400K->3400K(12288K)], 0.1870847 secs] [Times: user=0.05 sys=0.00, real=0.19 secs] 

最前面的数?span class="Apple-converted-space"> 4.231 ?span class="Apple-converted-space"> 4.445 代表虚拟机启动以来的U数?/p>

[GC ?span class="Apple-converted-space"> [Full GC 是垃圑֛收的停顿cdQ而不是区分是新生代还是年老代Q如果有 Full 说明发生?span class="Apple-converted-space"> Stop-The-World 。如果是调用 System.gc() 触发的,那么显C的?span class="Apple-converted-space"> [Full GC (System) ?/p>

接下来的 [DefNew, [Tenured, [Perm 表示 GC 发生的区域,区域的名UC使用?GC 攉器相兟?Serial 攉器中新生代名?"Default New Generation"Q显C的名字?"[DefNew"。对于ParNew攉器,昄的是 "[ParNew"Q表C?“Parallel New Generation”?对于 Parallel Scavenge 攉器,新生代名?"PSYoungGen"。年老代和永久代也相同,名称都由攉器决定?/p>

Ҏ(gu)号内部显C的 “4928K->512K(4928K)” 表示 “GC 前该区域已用容?-> GC 后该区域已用容?(该区域内存d? ”?/p>

再往后的 “0.0044047 secs” 表示该区域GC所用时_(d)单位是秒?/p>

再往后的 “6835K->3468K(15872K)” 表示 “GC 前Java堆已使用定w -> GC后Java堆已使用定w QJava堆d量)(j)”?/p>

再往后的 “0.0045291 secs” 是Java堆GC所用的L间?/p>

最后的 “[Times: user=0.00 sys=0.00, real=0.00 secs]” 分别代表 用户态消耗的CPU旉、内核态消耗的CPU旉 ?操作从开始到l束所l过的墙钟时间。墙钟时间包括各U非q算的等待耗时Q如IO{待、线E阻塞。CPU旉不包括等待时_(d)当系l有多核Ӟ多线E操作会(x)叠加q些CPU旉Q所以user或sys旉?x)超qreal旉?/p>

堆的分代

JVM-heap-generations

在上图中Q?/p>

  • young区域是新生代,存放新创建对象;
  • tenured是年老代Q存攑֜新生代经历多ơ垃圑֛收后仍存?gu)zȝ对象Q?/li>
  • perm是永生代Q存攄定义信息、元数据{信息?/li>

当GC发生在新生代ӞUCؓ(f)Minor GCQ次攉Q当GC发生在年老代ӞUCؓ(f)Major GCQ主攉?一般的QMinor GC的发生频率要比Major GC高很多?/p>

Eric_jiang 2015-06-18 11:28 发表评论
]]>
一ơCMS GC问题排查q程Q理解原?LGC日志Q?/title><link>http://www.aygfsteel.com/jjshcc/archive/2015/06/18/425768.html</link><dc:creator>Eric_jiang</dc:creator><author>Eric_jiang</author><pubDate>Thu, 18 Jun 2015 03:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/jjshcc/archive/2015/06/18/425768.html</guid><wfw:comment>http://www.aygfsteel.com/jjshcc/comments/425768.html</wfw:comment><comments>http://www.aygfsteel.com/jjshcc/archive/2015/06/18/425768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jjshcc/comments/commentRss/425768.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jjshcc/services/trackbacks/425768.html</trackback:ping><description><![CDATA[     摘要: q个是之前处理过的一个线上问题,处理q程断断l箋Q经历了(jin)两周多的旉Q中间各U尝试,ȝ如下。这文章分三部分:(x) 1、问题的场景和处理过E;2、GC的一些理Z西;3、看懂GC的日?先说一下问题吧 问题场景Q线上机器在半夜?x)推送一?00M左右的数据,q个时候有个数据置换的q程Q也是说有700M*2的数据在heap区域中,U上pȝ时比较多,D?jin)很严重Q严重程度就不说?jin)?j)的问题??..  <a href='http://www.aygfsteel.com/jjshcc/archive/2015/06/18/425768.html'>阅读全文</a><img src ="http://www.aygfsteel.com/jjshcc/aggbug/425768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jjshcc/" target="_blank">Eric_jiang</a> 2015-06-18 11:24 <a href="http://www.aygfsteel.com/jjshcc/archive/2015/06/18/425768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">;</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ݶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ĵʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank">⴨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ױ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֶ</a>| <a href="http://" target="_blank">̨ɽ</a>| <a href="http://" target="_blank">᰸</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ѽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">г</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>