现在的位置: 首页 > 综合 > 正文

关于CMS: abort preclean due to time

2013年10月26日 ⁄ 综合 ⁄ 共 605字 ⁄ 字号 评论关闭

hotspot的jvm目前主要支持4种gc,分别是:SerialGC, ParallelGC, ParallelOldGC和CMS GC。对于离线任务,更关注吞吐量,一般推荐ParallelOldGC;对于实时响应的任务,比如web server类似,推荐CMS gc。

详细的GC介绍可以参考bluedavy的介绍:http://rdc.taobao.com/team/jm/archives/654 还有hotspot jvm的官方文章:http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf

我们的CMS full gc时,经常会看到如下信息:CMS: abort preclean due to time, 这个问题有篇文章讲的很透彻:https://blogs.oracle.com/jonthecollector/entry/did_you_know。主要的意思是:preclean是为了加速下一级的remark过程,因为remark过程是STW的。preclean过程中为了更好的使用parallel,它会等待一次小gc(默认等待5s),如果5s内小gc没来,就会强制开始STW
remark过程,并打印信息abort preclean due to time。就是说,出现这个log实际上关系不大,除非我们发现remark过程耗时过久。

抱歉!评论已关闭.