【发布时间】:2013-02-20 20:39:33
【问题描述】:
当试图通过以下代码监控我自己的程序的内存使用情况时
public static String heapMemUsage()
{
long used = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed();
long max = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax();
return ""+used+" of "+max+" ("+ used/(double)max*100.0 + "%)";
}
我得到的结果与通过 jvisualvm 看到的略有不同(我的程序中的17 588 616 与 jvisualvm 中的18 639 640)。我知道这没什么大不了的,但它确实让我思考。
这个事实有什么解释吗?
如果可能的话,我想使用编码版本,但如果它的结果在某种程度上有偏差,jvisualvm 在某种程度上更可信,我将不得不坚持使用 jvisualvm。
谢谢
【问题讨论】:
-
我想知道 jvisualvm 是否将堆和非堆内存使用量相加以获得它的数量。尝试将它们都添加到您的应用中,看看是否更接近。
标签: java profiling mbeans jvisualvm