尝试通过以下代码监控我自己的程序的内存使用情况时
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
在我的程序中与18 639 640
在 jvisualvm 中)。我知道这没什么大不了的,但它确实让我思考。
这个事实有什么解释吗?
如果可能的话,我想使用编码版本,但如果它的结果在某种程度上有偏差,jvisualvm 在某种程度上更可信,我将不得不坚持使用 jvisualvm。
谢谢