通过Oshi获取到的CPU占用为NaN

问题遇到的现象和发生背景

我在写一个程序,程序需要能够获得CPU占用。但是我又不会写,于是我就从C上抄了一份能够得到CPU占用的代码

问题相关代码,请勿粘贴截图
SystemInfo systemInfo = new SystemInfo();
                CentralProcessor processor = systemInfo.getHardware().getProcessor();
                long[] prevTicks = processor.getSystemCpuLoadTicks();
                long[] ticks = processor.getSystemCpuLoadTicks();
                long nice = ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()];
                long irq = ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()];
                long softirq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];
                long steal = ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];
                long cSys = ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];
                long user = ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()];
                long iowait = ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];
                long idle = ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()];
                long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal;
                GlobalMemory memory = systemInfo.getHardware().getMemory();
                long totalByte = memory.getTotal();
                long acaliableByte = memory.getAvailable();
                result.append("当前机器CPU核心数量:").append(processor.getLogicalProcessorCount());
                result.append("\n");
                result.append("当前机器CPU总占用:").append(new DecimalFormat("#.##%").format(1.0-(idle * 1.0 / totalCpu))).append("%");

img

运行结果及报错内容

不报错,但是有一个问题。第一次得到的CPU占比是好的,但是第二次的时候,idle和totalCpu就变成0了,0/0结果引发了NaN,以下是debug截图:

img


可以看到很多参数都是0

我的解答思路和尝试过的方法

我对Oshi也不太了解(毕竟代码都是抄的),而且第一遍运行都是好的第二遍就成了0这种疑难杂症本来就难治。没办法了来发个问题

我想要达到的结果

让他别为0,正常显示