锁定老帖子 主题:关于CMS垃圾回收
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-20
最后修改:2012-03-20
配置如下:
root 18509 1 1 12:33 pts/5 00:04:55 /usr/java/jdk1.7.0_02/bin/java -Xms1536m -Xmx1536m -Xmn768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:%CATALINA_HOME%/gc.log -Djava.awt.headless=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/opt/tomcat/tomcat-8081/conf/logging.properties -Djava.endorsed.dirs=/opt/tomcat/tomcat-8081/endorsed -classpath :/opt/tomcat/tomcat-8081/bin/bootstrap.jar -Dcatalina.base=/opt/tomcat/tomcat-8081 -Dcatalina.home=/opt/tomcat/tomcat-8081 -Djava.io.tmpdir=/opt/tomcat/tomcat-8081/temp org.apache.catalina.startup.Bootstrap start
执行jmap -heap 18509获得信息:
Attaching to process ID 18509, please wait... Debugger attached successfully. Server compiler detected. JVM version is 22.0-b10
using parallel threads in the new generation. using thread-local object allocation. Concurrent Mark-Sweep GC
Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 1610612736 (1536.0MB) NewSize = 805306368 (768.0MB) MaxNewSize = 805306368 (768.0MB) OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 134217728 (128.0MB) MaxPermSize = 268435456 (256.0MB)
Heap Usage: New Generation (Eden + 1 Survivor Space): capacity = 724828160 (691.25MB) used = 467664152 (445.9992904663086MB) free = 257164008 (245.2507095336914MB) 64.52069301501751% used Eden Space: capacity = 644349952 (614.5MB) used = 467664152 (445.9992904663086MB) free = 176685800 (168.5007095336914MB) 72.57921732568082% used From Space: capacity = 80478208 (76.75MB) used = 0 (0.0MB) free = 80478208 (76.75MB) 0.0% used To Space: capacity = 80478208 (76.75MB) used = 0 (0.0MB) free = 80478208 (76.75MB) 0.0% used concurrent mark-sweep generation: capacity = 805306368 (768.0MB) used = 177873944 (169.6338119506836MB) free = 627432424 (598.3661880493164MB) 22.087735931078594% used Perm Generation: capacity = 238534656 (227.484375MB) used = 141940168 (135.36469268798828MB) free = 96594488 (92.11968231201172MB) 59.505050704246514% used
jstat 跟踪的情况是这样的: jstat -gc 18509 2000
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 78592.0 78592.0 0.0 5077.9 629248.0 568460.9 786432.0 171488.5 233136.0 140324.3 33 1.672 11 9.999 11.671 78592.0 78592.0 0.0 5077.9 629248.0 569044.4 786432.0 171488.5 233136.0 140324.3 33 1.672 11 9.999 11.671 78592.0 78592.0 0.0 5077.9 629248.0 569044.4 786432.0 171488.5 233136.0 140324.3 33 1.672 11 9.999 11.671 78592.0 78592.0 0.0 5077.9 629248.0 596179.3 786432.0 171488.5 233136.0 140325.1 33 1.672 12 9.999 11.671 78592.0 78592.0 0.0 0.0 629248.0 31965.2 786432.0 179646.8 233692.0 140214.0 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 39723.2 786432.0 179646.8 233692.0 140214.0 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 40560.0 786432.0 179646.8 233692.0 140214.0 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 40562.0 786432.0 179646.8 233692.0 140214.0 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 40739.1 786432.0 179646.8 233692.0 140214.0 33 1.672 12 11.064 12.736 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 78592.0 78592.0 0.0 0.0 629248.0 459223.4 786432.0 179646.8 233692.0 140254.9 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 460525.9 786432.0 179646.8 233692.0 140254.9 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 460544.2 786432.0 179646.8 233692.0 140254.9 33 1.672 12 11.064 12.736 78592.0 78592.0 0.0 0.0 629248.0 3875.6 786432.0 179488.5 233884.0 140248.7 33 1.672 13 12.000 13.672 78592.0 78592.0 0.0 0.0 629248.0 4699.8 786432.0 179488.5 233884.0 140248.7 33 1.672 13 12.000 13.672 注意jstat第3行和第4行了,做了一次fullgc,为什么会导致fullgc,求解。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-20
rmi引发?
|
|
返回顶楼 | |
发表时间:2012-03-22
btrace了一下,定位到问题是系统中做了Excel输出,用了jxl库,调用jxl库WritableWorkbook关闭的时候,默认做了System.gc()。
还好官方在创建WritableWorkbook的时候提供了setting选项,可以关闭之。 |
|
返回顶楼 | |
发表时间:2012-03-23
System.gc()触发Fgc的时候都会有个(System)字段,看到这个就可以推断到底是自己的代码还是第三方类库的问题了
|
|
返回顶楼 | |
发表时间:2012-03-23
最后修改:2012-03-23
[quote="richard_2010"]System.gc()触发Fgc的时候都会有个(System)字段,看到这个就可以推断到底是自己的代码还是第三方类库的问题了[/quote]
这个不太确切,我在一个JSP里面这样写了:
<% System.gc(); out.println("System.gc();1<br/>"); %> 执行上面的jsp后,后面的gc log是这样的:
149.389: [Full GC (System) 149.389: [CMS: 55401K->55419K(262144K), 0.5848093 secs] 57421K->55419K(498112K), [CMS Perm : 57888K->57888K(131072K)], 0.5850461 secs] |
|
返回顶楼 | |
发表时间:2012-03-26
aya331 写道
执行上面的jsp后,后面的gc log是这样的:
149.389: [Full GC (System) 149.389: [CMS: 55401K->55419K(262144K), 0.5848093 secs] 57421K->55419K(498112K), [CMS Perm : 57888K->57888K(131072K)], 0.5850461 secs]
这不是有(System)字段么? 可能你误解我的意思了, 我的意思是如果有(System)字段,你可以用关键词搜索你的代码看有没显示调用System.gc(),then…… |
|
返回顶楼 | |
发表时间:2012-03-26
richard_2010 写道 aya331 写道
执行上面的jsp后,后面的gc log是这样的:
149.389: [Full GC (System) 149.389: [CMS: 55401K->55419K(262144K), 0.5848093 secs] 57421K->55419K(498112K), [CMS Perm : 57888K->57888K(131072K)], 0.5850461 secs]
这不是有(System)字段么? 可能你误解我的意思了, 我的意思是如果有(System)字段,你可以用关键词搜索你的代码看有没显示调用System.gc(),then…… 嗯嗯,我误解你了~~ |
|
返回顶楼 | |
发表时间:2012-03-27
小好奇,不知道楼主用的BTrace脚本是怎样的?
我以前用过的脚本是这样的:https://gist.github.com/2000950/37b0095b1edbb7d4a43cc5b39cbe148c8184d3aa#file_trace_system_gc_call.java |
|
返回顶楼 | |
浏览 4322 次