我有以下问题:
有一个Java VM,其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显示双倍最大堆大小?
答案 0 :(得分:5)
这是使用G1垃圾收集器时visualVM中的一个错误,max实际上并不大。 Jconsole确实报告了它。
以下report提供了可能的解释。这里的原因是不同的代不再具有固定的大小,而是每个的最大大小是完整堆的大小(因为它们都可以根据需要使用)。我还没有找到任何正式的错误报告。