10

我有以下问题:

有一个 Xmx 选项设置为 70000m = 70GB 的 Java VM(是的,就是这么大)。但是如果我监控前面提到的 JVM,Max Heap 显示为 140000m(如屏幕截图所示)。

截屏

以下列出了使用的 JVM 选项:

-XX:+UseG1GC
-Duser.timezone=Europe/Berlin
-Djava.security.egd=file:///dev/urandom
-Dsun.rmi.transport.tcp.handshakeTimeout=180000
-Dsun.rmi.dgc.client.gcInterval=600000
-Dsun.rmi.dgc.server.gcInterval=600000
-verbose:gc
-XX:CICompilerCount=2
-Xrunjdwp:transport=dt_socket,server=y,address=3997,suspend=n
-Xms70000m
-Xmx70000m
-XX:+UnlockExperimentalVMOptions
-XX:G1HeapRegionSize=32
-XX:MaxGCPauseMillis=200
-XX:G1NewSizePercent=2
-XX:G1MaxNewSizePercent=60
-XX:ParallelGCThreads=8
-XX:ConcGCThreads=2
-XX:InitiatingHeapOccupancyPercent=45
-XX:G1MixedGCLiveThresholdPercent=65
-XX:G1HeapWastePercent=10
-XX:G1OldCSetRegionThresholdPercent=10
-XX:G1ReservePercent=10

有人提示,为什么 VisualVM 显示双倍最大堆大小?

4

1 回答 1

11

这是使用 G1 垃圾收集器时 visualVM 中的一个错误,最大值实际上并没有这么大。Jconsole 确实正确地报告了它。

以下报告提供了一种可能的解释。这里的原因是不同代不再具有固定大小,而是每个代的最大大小是完整堆的大小(因为它们都可以根据需要使用)。我还没有找到任何官方的错误报告。

于 2016-11-22T14:23:08.813 回答