我们看到年轻一代GC的停顿时间不合理。我们使用8G的堆大小和4GB的年轻代。有没有人指出我们如何才能找到如此高暂停时间背后的原因?
我们使用-XX:ParallelGCThreads = 48并在48核心机器上运行。我们在centOS 6上使用oracle idk 1.7_0_79
完整的选项列表:
JVM_OPTS="$JVM_OPTS -XX:+UseParNewGC"
JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC"
JVM_OPTS="$JVM_OPTS -XX:+CMSParallelRemarkEnabled"
JVM_OPTS="$JVM_OPTS -XX:SurvivorRatio=8"
JVM_OPTS="$JVM_OPTS -XX:MaxTenuringThreshold=15"
JVM_OPTS="$JVM_OPTS -XX:CMSInitiatingOccupancyFraction=85"
JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
JVM_OPTS="$JVM_OPTS -XX:+UseTLAB"
JVM_OPTS="$JVM_OPTS -XX:MaxPermSize=256m"
JVM_OPTS="$JVM_OPTS -XX:+AggressiveOpts"
JVM_OPTS="$JVM_OPTS -XX:+UseCompressedOops"
JVM_OPTS="$JVM_OPTS -XX:+CMSScavengeBeforeRemark"
JVM_OPTS="$JVM_OPTS -XX:ConcGCThreads=48"
JVM_OPTS="$JVM_OPTS -XX:ParallelGCThreads=48"
JVM_OPTS="$JVM_OPTS -XX:-ExplicitGCInvokesConcurrent"
JVM_OPTS="$JVM_OPTS -XX:+UnlockDiagnosticVMOptions"
JVM_OPTS="$JVM_OPTS -XX:+UseGCTaskAffinity"
JVM_OPTS="$JVM_OPTS -XX:+BindGCTaskThreadsToCPUs"
JVM_OPTS="$JVM_OPTS -XX:ParGCCardsPerStrideChunk=65536"
JVM_OPTS="$JVM_OPTS -XX:CMSScheduleRemarkEdenSizeThreshold=104857600"
JVM_OPTS="$JVM_OPTS -XX:CMSRescanMultiple=32768"
JVM_OPTS="$JVM_OPTS -XX:CMSConcMarkMultiple=32768"
JVM_OPTS="$JVM_OPTS -XX:TargetSurvivorRatio=90"
JVM_OPTS="$JVM_OPTS -XX:+PrintGCDetails"
JVM_OPTS="$JVM_OPTS -XX:+PrintGCDateStamps"
JVM_OPTS="$JVM_OPTS -XX:+PrintGCApplicationStoppedTime"
JVM_OPTS="$JVM_OPTS -XX:+PrintPromotionFailure"
答案 0 :(得分:0)
为您提供一些建议