JavaGC调优手记.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaGC调优手记

转自/firecoder/article/details/7225654摘要本文记录GC调试的一次实验过程和结果。GC知识要点回顾问题1:为什么要调试GC参数?在32核处理器的系统上,10%的GC时间导致75%的吞吐量损失。所以在大型系统上,调试GC是以小博大的不错选择。small improvements in reducing such a bottleneck can produce large gains in performance.问题2:怎么样调试GC?调试GC,有三个主要的参数:选择合适的GC Collector整个JVM Heap堆的大小Young Generation的大小(-Xmn?m or -XX:NewRatio=?)问题3:有哪些不同的GC Collector?Tony Printezis (JVM大牛)在Garbage Collection in the Java HotSpot Virtual Machine有图为证,还有一篇更早的sun开发人员介绍GC调试也是有图为证/chunked/snapshot/configuration-jvm.htmlneo4j总结如下GC shortnameGenerationCommand line parameterCommentCopyYoung-XX:+UseSerialGCThe Copying collectorMarkSweepCompactTenured-XX:+UseSerialGCThe Mark and Sweep CompactorConcurrentMarkSweepTenured-XX:+UseConcMarkSweepGCThe Concurrent Mark and Sweep CompactorParNewYoung-XX:+UseParNewGCThe parallel Young Generation Collector?—?can only be used with the Concurrent mark and sweep compactor.PS ScavengeYoung-XX:+UseParallelGCThe parallel object scavengerPS MarkSweepTenured-XX:+UseParallelGCThe parallel mark and sweep collector简而言之,Young和Tenured各种三种Collector,分别是Serial 单线程Parallel 多线程并行, GC线程和App线程取一运行,即GC要Stop the (app) world。Concurrent 多线程并发,GC线程和App线程可同时运行。(注: Young generation 没有CMS,取而代之的是可和CMS(Old)一起运行的ParNew)问题4:如何选择Collector?Serial可以直接排除掉,现在最普通的服务器也有双核64位\8G内存,默认的Collector是PS Scavenge和PS MarkSweep。所以Collector在并行(Parallel)和并发(Concurrent)两者之间选择。问题5:选择的标准(参数指标)是什么?如何得到这些参数值(How to measure it)?throughput和latency。garbage-collection-in-java-part-3从GC的耗时给出了吞吐量和响应速度的公式Total Execution Time = Useful Time + Paused Timethroughput =?Useful Time /?Total Execution Timelatency = average paused time如何得到Useful time 和 Paused Time?即如何得到JVM的GC时间,有以下几种方式GC Log打印GC log,java 启动参数中加入下面的语句(本文为tomcat应用)。GC Log 记录每次GC时间,可根据GC Log计算平均GC时间和累积GC时间。[plain] /firecoder/article/details/7225654view plain/firecoder/article/details/7225654copyCATALINA_OPTS=$CATALINA_OPTS?-verbose:gc?-Xloggc:/usr/local/tomcat/gc?-XX:+PrintGCDetails?-XX:+PrintGCTimeStamps?/javase/6/docs/technotes/guides/management/jconsole.htmlJconso

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档