Java:G1上一代垃圾回收计数为0

时间:2018-12-18 10:08:57

标签: java apache-kafka garbage-collection jconsole

我们正在为运行{em> Jolokia JMX 代理的Kafka的GC设置监视。 我们正在使用Telegraph将JMX从系统中运送到我们的Grafana服务器以绘制图形。

当我们检查G1 GC count for Old Generation时,我们可以看到收集计数和收集时间为enter image description here

但是G1 Old Gen的内存池下降在下图enter image description here

中很明显

使用以下命令来运行Kafka进程的Java参数:

-javaagent:/usr/lib/jolokia/jolokia-jvm-1.5.0-agent.jar -Xmx2G -Xms2G -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Xloggc:/home/test/kafka_2.12-1.0.1/bin/../logs/kafkaServer-gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=8000 -Djava.rmi.server.hostname=172.31.24.149 -Dkafka.logs.dir=/home/test/kafka_2.12-1.0.1/bin/../logs -Dlog4j.configuration=file:./bin/../config/log4j.properties

谁能指出这个问题。

1 个答案:

答案 0 :(得分:7)

G1垃圾收集器利用了3种类型的收集器(全部都是Stop-the-World)

  • 年轻的GC仅收集年轻空间
  • mixer GC收集年轻空间+旧空间中的几个区域
  • 完整GC-紧急GC收集全部内容,如果增量收集无法跟上应用程序内存使用量,则会触发该事件

理想情况下,G1中永远不会发生完全GC。

关于JMX计数器,  -年轻和混合器被视为年轻GC  -完整的GC被视为旧的

正如我说的那样,对于G1,旧的JMX计数器预计将保持为0,尽管年轻集合会回收(逐渐地)回收旧空间。