繁体   English   中英

在Java 8中输出Java实际内存使用tomcat jvm

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM