Java JMX获取实时堆内存使用情况报告常量值
我有一个监控JVM堆内存使用情况的程序。从文档中我了解到,系统中只有一个JVM,我们可以使用ManagementFactory.getMemoryBean()获取JVM的MXbean。但当我一段时间反复运行这个程序时,我会得到所用堆内存的常量值。我有一个java程序,它在循环中创建对象并销毁它们。在JVisualVM中进行监视时,实时使用率图表明堆内存使用率随时间而变化,而且由于它在同一JVM上运行,这些值不也应该改变吗 以下是获取内存的代码段:Java JMX获取实时堆内存使用情况报告常量值,java,javabeans,jmx,Java,Javabeans,Jmx,我有一个监控JVM堆内存使用情况的程序。从文档中我了解到,系统中只有一个JVM,我们可以使用ManagementFactory.getMemoryBean()获取JVM的MXbean。但当我一段时间反复运行这个程序时,我会得到所用堆内存的常量值。我有一个java程序,它在循环中创建对象并销毁它们。在JVisualVM中进行监视时,实时使用率图表明堆内存使用率随时间而变化,而且由于它在同一JVM上运行,这些值不也应该改变吗 以下是获取内存的代码段: MemoryMXBean mem
MemoryMXBean memBean = ManagementFactory.getMemoryMXBean();
MemoryUsage mem = memBean.getHeapMemoryUsage();
long heapMax = mem.getMax();
long heapCurrMax = mem.getInit();
long heapUsed = mem.getUsed();
long heapCommitted = mem.getCommitted();
已用内存的输出:
379771840379771840
379771840
379771840
379771840
379771840
全部相隔5秒
有人能告诉我我所做的是错的还是我所理解的是错的吗?我不知道怎么做,但相同的代码在反复尝试后开始工作。在我做了一个详细的分析后,我会发布一个详细的分析