VisualVM 将双 Xmx 显示为最大堆大小
VisualVM shows double Xmx as Max Heap Size
我遇到以下问题:
有一个 Java 虚拟机,其 Xmx 选项设置为 70000m = 70GB(是的,有那么大)。但是如果我监控前面提到的 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 显示两倍的最大堆大小?
这是使用 G1 垃圾收集器时 visualVM 中的一个错误,最大值实际上并没有这么大。 Jconsole 确实正确地报告了它。
下面的report提供了一个可能的解释。这里的原因是不同代不再有固定的大小,而是每个代的最大大小是整个堆的大小(因为它们都可以根据需要使用)。我还没有找到任何关于这个的官方错误报告。
我遇到以下问题:
有一个 Java 虚拟机,其 Xmx 选项设置为 70000m = 70GB(是的,有那么大)。但是如果我监控前面提到的 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 显示两倍的最大堆大小?
这是使用 G1 垃圾收集器时 visualVM 中的一个错误,最大值实际上并没有这么大。 Jconsole 确实正确地报告了它。
下面的report提供了一个可能的解释。这里的原因是不同代不再有固定的大小,而是每个代的最大大小是整个堆的大小(因为它们都可以根据需要使用)。我还没有找到任何关于这个的官方错误报告。