首页 文章

CMS初始标记耗时800毫秒,这是正常的吗?

提问于
浏览
1

GC设置为:

Min, max, total JVM size (-Xms -Xmx)

JVM_SIZE="-Xms24g -Xmx24g"

New Generation Sizes (-Xmn)

JVM_SIZE_NEW="-Xmn2g"

Type of Garbage Collector to use

JVM_GC_TYPE="-XX:+UseConcMarkSweepGC -XX:+UseParNewGC"

Tuning options for the above garbage collector

JVM_GC_OPTS="-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -XX:SurvivorRatio=8 -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled"

也许24克对于CMS来说太大了?

2014-03-03T19:34:10.687 0800:74.121:[GC [1 CMS-initial-mark:1431731K(23068672K)] 3170863K(24956160K),0.8289630 secs] [次:用户= 0.83 sys = 0.00,real = 0.83 secs]应用程序线程停止的总时间:0.8294730秒

1 回答

  • 0

    对于CMS,可能24g太大了?

    这取决于你的业务,它需要那么多,或者它可以用少于24克 .

    然而,记忆由2个maim空间隔开,年轻和年老 . 这两个空格是分开收集的,所以要启用 CMS ,你需要使用 ‑XX:+UseConcMarkSweepGC

    CMS 将收集年轻人,如果它被填补或一段时间 . 并且有一些建议将年轻空间设置如下:

    -XX:MaxNewSize=  -> this need to be 40% from your Xmx value
    -XX:NewSize= -> this need to be 40% from your Xmx value
    

    这将加快 GC 并使其更准确 . 这意味着旧的不会填补那么快(避免过早促销对象) .

    也可以用来控制 GC 延迟:

    –XX:CMSWaitDuration= -delay in ms-
    

相关问题