我想绘制 Java 8 中 tomcat 门户的 java vm 内存使用情况图表。
Java Runtime 值是错误的,它只给出半准确的估计,例如:
Runtime.getRuntime().maxMemory();
我以为我在 stackOverflow 上找到了一个很好的解决方案,但它只适用于 Java 7:
MemoryPoolMXBean testEdenBean = ManagementFactory.getMemoryPoolMXBeans().get(3);
MemoryPoolMXBean testSurvivorBean = ManagementFactory.getMemoryPoolMXBeans().get(4);
MemoryPoolMXBean testTemurBean = ManagementFactory.getMemoryPoolMXBeans().get(5);
max = testEdenBean.getUsage().getMax()
+ (testSurvivorBean.getUsage().getMax() * 2)
+ testTemurBean.getUsage().getMax();
Java VisualVM 给了我真正的值(value),因为如果我用 1024m 启动 tomcat -Xmx,我得到 Max: 1.073.741.824 B,这是正确的。
如何让我的代码输出正确的值?
最佳答案
试试这个:
MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
MemoryUsage heapUsage = mbean.getHeapMemoryUsage();
System.out.println("Max heap memory is "+heapUsage.getMax()/1024/1024+" MBytes");
System.out.println("Used heap memory is "+heapUsage.getUsed()/1024/1024+" MBytes");
MemoryUsage nonHeapUsage= mbean.getNonHeapMemoryUsage();
System.out.println("Max non-heap memory is "+nonHeapUsage.getMax()/1024/1024+" MBytes");
System.out.println("Used non-heap memory is "+nonHeapUsage.getUsed()/1024/1024+" MBytes");
如果这就是您要找的,请告诉我。
关于java - Java 8中tomcat jvm的输出Java Real memory usage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534162/