[英]Output Java Real memory usage of tomcat jvm in Java 8
我想在Java 8中绘制一个tomcat门户的java vm内存使用情况。
Java运行时值是错误的,它只给出半精度估计值,例如:
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给了我真实的价值,因为如果我用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");
如果这是您正在寻找的,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.