Java MemoryUsage初始大小大于最大大小
我使用vm参数配置自己的堆大小:Java MemoryUsage初始大小大于最大大小,java,garbage-collection,heap,javabeans,heap-memory,Java,Garbage Collection,Heap,Javabeans,Heap Memory,我使用vm参数配置自己的堆大小: -Xmx5g -Xms5g -XX:NewSize=1g 我尝试使用java mxbeans监视应用程序的堆使用情况: ManagementFactory.getMemoryMXBean().getHeapMemoryUsage() 奇怪的是,我得到的结果毫无意义 堆初始大小大于最大堆大小 init = 5368709120(5242880K) used = 209032600(204133K) committed = 5145034752(5024448K
-Xmx5g
-Xms5g
-XX:NewSize=1g
我尝试使用java mxbeans监视应用程序的堆使用情况:
ManagementFactory.getMemoryMXBean().getHeapMemoryUsage()
奇怪的是,我得到的结果毫无意义
堆初始大小大于最大堆大小
init = 5368709120(5242880K)
used = 209032600(204133K)
committed = 5145034752(5024448K)
max = 5145034752(5024448K)
你知道怎么可能吗
顺便说一句,如果我运行的是jvisualvm,我可以看到正确的最大值:
Max是Jvm可以为您的程序寻址的内存。一些内存始终保留用于管理。heap init size是正确的:
-Xms5g
=1024^3*5=5368709120但Java无法使用所有内存,因为它不可用。请查看我添加的图像,jvisualvm似乎知道如何读取正确的数字。无论如何,我希望最大堆大小大于或等于init size,而不是相反