Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMX获取实时堆内存使用情况报告常量值_Java_Javabeans_Jmx - Fatal编程技术网

Java JMX获取实时堆内存使用情况报告常量值

Java JMX获取实时堆内存使用情况报告常量值,java,javabeans,jmx,Java,Javabeans,Jmx,我有一个监控JVM堆内存使用情况的程序。从文档中我了解到,系统中只有一个JVM,我们可以使用ManagementFactory.getMemoryBean()获取JVM的MXbean。但当我一段时间反复运行这个程序时,我会得到所用堆内存的常量值。我有一个java程序,它在循环中创建对象并销毁它们。在JVisualVM中进行监视时,实时使用率图表明堆内存使用率随时间而变化,而且由于它在同一JVM上运行,这些值不也应该改变吗 以下是获取内存的代码段: MemoryMXBean mem

我有一个监控JVM堆内存使用情况的程序。从文档中我了解到,系统中只有一个JVM,我们可以使用ManagementFactory.getMemoryBean()获取JVM的MXbean。但当我一段时间反复运行这个程序时,我会得到所用堆内存的常量值。我有一个java程序,它在循环中创建对象并销毁它们。在JVisualVM中进行监视时,实时使用率图表明堆内存使用率随时间而变化,而且由于它在同一JVM上运行,这些值不也应该改变吗

以下是获取内存的代码段:

        MemoryMXBean memBean = ManagementFactory.getMemoryMXBean();
        MemoryUsage mem = memBean.getHeapMemoryUsage();

        long heapMax = mem.getMax();
        long heapCurrMax = mem.getInit();
        long heapUsed = mem.getUsed();
        long heapCommitted = mem.getCommitted();
已用内存的输出:

379771840
379771840
379771840
379771840
379771840
379771840
全部相隔5秒


有人能告诉我我所做的是错的还是我所理解的是错的吗?

我不知道怎么做,但相同的代码在反复尝试后开始工作。在我做了一个详细的分析后,我会发布一个详细的分析