锁定老帖子 主题:CMS gc实践总结
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-22
最后修改:2009-09-22
首先感谢阿宝同学的帮助,我才对这个gc算法的调整有了一定的认识,而不是停留在过去仅仅了解的阶段。在读过sun的文档和跟阿宝讨论之后,做个小小的总结,如果有谬误,敬请指正。
2。CMS默认启动的回收线程数目是 (ParallelGCThreads + 3)/4) ,如果你需要明确设定,可以通过-XX:ParallelCMSThreads=20来设定,其中ParallelGCThreads是年轻代的并行收集线程数
-server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=64m -XX:MaxPermSize=64m -XX:-UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0
需要在生产环境或者压测环境中测量这些参数下系统的表现,这时候需要打开GC日志查看具体的信息,因此加上参数:
4391.322: [GC [1 CMS-initial-mark: 655374K(1310720K)] 662197K(1546688K), 0.0303050 secs] [Times: user=0.02 sys=0.02, real=0.03 secs] 4391.352: [CMS-concurrent-mark-start] 4391.779: [CMS-concurrent-mark: 0.427/0.427 secs] [Times: user=1.24 sys=0.31, real=0.42 secs] 4391.779: [CMS-concurrent-preclean-start] 4391.821: [CMS-concurrent-preclean: 0.040/0.042 secs] [Times: user=0.13 sys=0.03, real=0.05 secs] 4391.821: [CMS-concurrent-abortable-preclean-start] 4392.511: [CMS-concurrent-abortable-preclean: 0.349/0.690 secs] [Times: user=2.02 sys=0.51, real=0.69 secs] 4392.516: [GC[YG occupancy: 111001 K (235968 K)]4392.516: [Rescan (parallel) , 0.0309960 secs]4392.547: [weak refs processing, 0.0417710 secs] [1 CMS-remark: 655734K(1310720K)] 766736K(1546688K), 0.0932010 secs] [Times: user=0.17 sys=0.00, real=0.09 secs] 4392.609: [CMS-concurrent-sweep-start] 4394.310: [CMS-concurrent-sweep: 1.595/1.701 secs] [Times: user=4.78 sys=1.05, real=1.70 secs] 4394.310: [CMS-concurrent-reset-start] 4394.364: [CMS-concurrent-reset: 0.054/0.054 secs] [Times: user=0.14 sys=0.06, real=0.06 secs]
[ParNew (promotion failed): 320138K->320138K(353920K), 0.2365970 secs]42576.951: [CMS: 1139969K->1120688K( 2166784K), 9.2214860 secs] 1458785K->1120688K(2520704K), 9.4584090 secs]
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-24
多谢多谢,这类深入JDK的文章不多见。
|
|
返回顶楼 | |
发表时间:2009-09-24
CoxZhang 写道 多谢多谢,这类深入JDK的文章不多见。
谈不上深入jdk,只是一个GC调优总结,参考作用。 |
|
返回顶楼 | |
发表时间:2010-05-26
有个问题想请教一下,
-server 这个参数设与不设有什么用, 目前我项目的生产环境配置的参数如下: MEM_ARGS="-Xms1124m -Xmx1124m -XX:NewSize=500m -XX:MaxNewSize=500m -XX:PermSize=400m -XX:MaxPermSize=400m" MEM_ARGS="${MEM_ARGS} -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:+CMSPermGenSweepingEnabled -XX:MaxTenuringThre shold=5 -XX:CMSInitiatingOccupancyFraction=80 -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/home/bea6/log/gc_log/gc.log" 目前在跑的项目没有出现太大的问题,项目刚启动的时候新生代约500-450m左右,minor gc约0.66秒左右,full gc约120秒左右(2ms左右的差距)。 由于是刚配置的参数,具体情况还需要时间的检验。后续情况有时间的话我会回帖。也给其他调优人员参考。 感谢LZ总结的这个帖子,让我学到不少东西。 |
|
返回顶楼 | |
发表时间:2010-05-26
补充一下 生产服务器 内存(可用物理)4G CPU:Intel(R) Xeon(R) CPU X5450 @ 3.00GHz;4cpu cores。
由于业务需要,现正申请给服务器增加内存,预计增加4G。 以上的配置参数,我觉得应该针对CPU进行优化,不过还拿不准,目前正在测试环境上调试。 |
|
返回顶楼 | |
发表时间:2010-09-08
Heap
PSYoungGen total 569664K, used 555637K [0xc0e20000, 0xf0e20000, 0xf0e20000) eden space 353088K, 100% used [0xc0e20000,0xd66f0000,0xd66f0000) from space 216576K, 93% used [0xd66f0000,0xe2cbd4b0,0xe3a70000) to space 216192K, 93% used [0xe3b00000,0xf00f7250,0xf0e20000) PSOldGen total 1310720K, used 1310718K [0x70e20000, 0xc0e20000, 0xc0e20000) object space 1310720K, 99% used [0x70e20000,0xc0e1f8f8,0xc0e20000) PSPermGen total 59648K, used 59597K [0x6ce20000, 0x70860000, 0x70e20000) object space 59648K, 99% used [0x6ce20000,0x70853770,0x70860000) 针对这个崩掉的消息,我现在的硬件情况 系统:suse 内存:8G cpu :主流 双核 应该怎么配JVM呢? |
|
返回顶楼 | |
发表时间:2010-09-09
opleo 写道 Heap
PSYoungGen total 569664K, used 555637K [0xc0e20000, 0xf0e20000, 0xf0e20000) eden space 353088K, 100% used [0xc0e20000,0xd66f0000,0xd66f0000) from space 216576K, 93% used [0xd66f0000,0xe2cbd4b0,0xe3a70000) to space 216192K, 93% used [0xe3b00000,0xf00f7250,0xf0e20000) PSOldGen total 1310720K, used 1310718K [0x70e20000, 0xc0e20000, 0xc0e20000) object space 1310720K, 99% used [0x70e20000,0xc0e1f8f8,0xc0e20000) PSPermGen total 59648K, used 59597K [0x6ce20000, 0x70860000, 0x70e20000) object space 59648K, 99% used [0x6ce20000,0x70853770,0x70860000) 针对这个崩掉的消息,我现在的硬件情况 系统:suse 内存:8G cpu :主流 双核 应该怎么配JVM呢? 你这个应该是负荷超过了吧,gc已经来不及了,你试试楼主说的CMS看 |
|
返回顶楼 | |
发表时间:2010-09-09
opleo 写道 Heap
PSYoungGen total 569664K, used 555637K [0xc0e20000, 0xf0e20000, 0xf0e20000) eden space 353088K, 100% used [0xc0e20000,0xd66f0000,0xd66f0000) from space 216576K, 93% used [0xd66f0000,0xe2cbd4b0,0xe3a70000) to space 216192K, 93% used [0xe3b00000,0xf00f7250,0xf0e20000) PSOldGen total 1310720K, used 1310718K [0x70e20000, 0xc0e20000, 0xc0e20000) object space 1310720K, 99% used [0x70e20000,0xc0e1f8f8,0xc0e20000) PSPermGen total 59648K, used 59597K [0x6ce20000, 0x70860000, 0x70e20000) object space 59648K, 99% used [0x6ce20000,0x70853770,0x70860000) 针对这个崩掉的消息,我现在的硬件情况 系统:suse 内存:8G cpu :主流 双核 应该怎么配JVM呢? 你这个明显是内存爆掉了,是不是堆开太小?如果不是,那就需要去查下是不是内存泄漏,这不是GC能解决的。 |
|
返回顶楼 | |
浏览 33702 次