这里获取的内存,不是指Runtime 类 获取的 JVM内存(即虚拟机内存)。
这里获取的是实际物理机上的内存条容量。
首先吐槽一下,在网上找了一大堆全是抄来抄去的。也没有说明白其中的原因。
今天搞了一天才搞明白是什么意思。这里记录一下。
其中比较重要的逻辑是计算CPU使用率的内存:
利用电脑当中的wmic 程序获取使用率。wmic process get Caption,kernelModeTime,UserModeTime
获取所有进程的KernelModeTime 和UserModeTime.
执行结果如下:
然后根据以上数据进行以下公式:
算出所有进程的 (KernelModeTime总和 + UserModeTime总和),作为allPorcessTime1;
算出System Idle Process进程和System进程的 (KernelModeTime总和 + UserModeTime总和),作为systemProcessTime1;
隔几秒后,再次调用wmic命令,再次获取allPorcessTime2和systemProcessTime2;然后,
busyTime = allPorcessTime2 - allPorcessTime1;
idleTime = systemProcessTime2 - systemProcessTime1;