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

Bid*_*yut 3 java garbage-collection jconsole apache-kafka

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

当我们检查时,G1 GC count for Old Generation我们可以看到收集计数和收集时间为在此处输入图片说明

但是下图中的内存池下降G1 Old Gen很明显在此处输入图片说明

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

谁能指出这个问题。

Ale*_*zin 7

G1垃圾收集器利用了3种类型的收集器(所有这些都是Stop-the-World)

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

理想情况下,完整的GC应该永远不会出现在G1中。

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

就像我说的那样,在G1的情况下,旧的JMX计数器预计将保持为0,尽管年轻集合会(逐渐地)回收旧空间。