在Java(Linux)

时间:2017-06-13 00:25:05

标签: java linux cpu-usage

我基本上希望com.sun.management.OperatingSystemMXBean.getSystemCpuLoad()的结果在一段时间间隔内平均,比如说60秒。

java.lang.management.OperatingSystemMXBeangetSystemLoadAverage(),但是从我读过的内容来看,“CPU负载”而不是“CPU使用率”,计算方式不同。

是否存在某些预先存在的API以获得我想要的内容,或者我是否必须自己实现它?

1 个答案:

答案 0 :(得分:0)

如果您希望平均值以任何方式有意义,则需要将某个数据集的平均值设置为大于1。

以固定的时间间隔(例如每秒一次)查询系统当前的CPU负载,并将每个查询的结果随时间保存在某种类型的集合中,如数组。

之后,您可以获得阵列中最新60个条目的平均值,这将是过去60秒内的平均CPU负载(精度为1秒)。

如果你不知道如何平均某事,那就是average = sum_of_elements_values / number_of_elements

如果你想要某种形式的“绝对”精度,而不是1秒精度,那么所有改变都是你必须查询每个CPU周期。