当前位置:   article > 正文

【原创】Java获取CPU占用率、内存占用率最简单的方式_java获取cpu使用率

java获取cpu使用率

先上代码,保证这是目前全网最简单的获取系统CPU占用率、内存占用率的方法

  1. @Test
  2. public void testSystemUsage() {
  3. final long GB = 1024 * 1024 * 1024;
  4. while (true) {
  5. OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
  6. String osJson = JSON.toJSONString(operatingSystemMXBean);
  7. // System.out.println("osJson is " + osJson);
  8. JSONObject jsonObject = JSON.parseObject(osJson);
  9. double processCpuLoad = jsonObject.getDouble("processCpuLoad") * 100;
  10. double systemCpuLoad = jsonObject.getDouble("systemCpuLoad") * 100;
  11. Long totalPhysicalMemorySize = jsonObject.getLong("totalPhysicalMemorySize");
  12. Long freePhysicalMemorySize = jsonObject.getLong("freePhysicalMemorySize");
  13. double totalMemory = 1.0 * totalPhysicalMemorySize / GB;
  14. double freeMemory = 1.0 * freePhysicalMemorySize / GB;
  15. double memoryUseRatio = 1.0 * (totalPhysicalMemorySize - freePhysicalMemorySize) / totalPhysicalMemorySize * 100;
  16. StringBuilder result = new StringBuilder();
  17. result.append("系统CPU占用率: ")
  18. .append(twoDecimal(systemCpuLoad))
  19. .append("%,内存占用率:")
  20. .append(twoDecimal(memoryUseRatio))
  21. .append("%,系统总内存:")
  22. .append(twoDecimal(totalMemory))
  23. .append("GB,系统剩余内存:")
  24. .append(twoDecimal(freeMemory))
  25. .append("GB,该进程占用CPU:")
  26. .append(twoDecimal(processCpuLoad))
  27. .append("%");
  28. System.out.println(result.toString());
  29. try {
  30. Thread.sleep(500);
  31. } catch (InterruptedException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }
  36. public double twoDecimal(double doubleValue) {
  37. BigDecimal bigDecimal = new BigDecimal(doubleValue).setScale(2, RoundingMode.HALF_UP);
  38. return bigDecimal.doubleValue();
  39. }

这代码我注释都懒得写一行了,主要是这一行:JSON.toJSONString(operatingSystemMXBean),输出的结果如图:(使用的是阿里巴巴的fastjson)

我当时只是为了偷懒一个个去get输出,就直接通过JSON的方式打印输出了,结果不输出不知道,一输出吓一跳,把一堆隐藏字段都给输出出来了,包括systemCpuLoad、processCpuLoad,这两个字段一个就是系统CPU总的利用率,另一个应该是这个Java进程当前的CPU利用率,这样就省去很多事了,直接通过JSONObject取出来就是了,直接就给输出出来了。

其中:OperatingSystemMXBean这个类是JDK自带的,不用引入任何第三方jar包

输出最终结果如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/58846
推荐阅读
相关标签
  

闽ICP备14008679号