此图表显示了我们的 Java 应用程序在 4 天内的堆利用率 (OU+EU+S1U+S2U)。每一个 drop 都是一个 Young GC 事件。如您所见,堆使用量呈增长趋势。Full GC 在运行 6 天后发生(图中未显示)。它将堆使用率降低到正常水平,但暂停时间为 2 分钟,并导致应用程序丢弃许多事务。
我们的 JRE 是 8,我们使用并行 GC。堆参数如下:
java -server -Xms64g -Xmx64g -XX:MetaspaceSize=96M -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -XX:MaxMetaspaceSize=1g -XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.zip.disableMemoryMapping=true
我试图了解什么调整可以使 Young GC 更有效,以便它删除所有垃圾并避免升级到老年代。
ibeautiful
九州编程
相关分类