首页 > 系统相关 >Java获取CPU占用率、内存占用率

Java获取CPU占用率、内存占用率

时间:2023-12-04 18:04:23浏览次数:36  
标签:twoDecimal Java double totalPhysicalMemorySize GB import 占用率 CPU append

package test.lyh.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class SystemUsage {
    public static void main(String[] args) {
        testSystemUsage();
    }

    public static void testSystemUsage() {
        final long GB = 1024 * 1024 * 1024;
        while (true) {
            OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
            String osJson = JSON.toJSONString(operatingSystemMXBean);
//            System.out.println("osJson is " + osJson);
            JSONObject jsonObject = JSON.parseObject(osJson);
            double processCpuLoad = jsonObject.getDouble("processCpuLoad") * 100;
            double systemCpuLoad = jsonObject.getDouble("systemCpuLoad") * 100;
            Long totalPhysicalMemorySize = jsonObject.getLong("totalPhysicalMemorySize");
            Long freePhysicalMemorySize = jsonObject.getLong("freePhysicalMemorySize");
            double totalMemory = 1.0 * totalPhysicalMemorySize / GB;
            double freeMemory = 1.0 * freePhysicalMemorySize / GB;
            double memoryUseRatio = 1.0 * (totalPhysicalMemorySize - freePhysicalMemorySize) / totalPhysicalMemorySize * 100;

            StringBuilder result = new StringBuilder();
            result.append("系统CPU占用率: ")
                    .append(twoDecimal(systemCpuLoad))
                    .append("%,内存占用率:")
                    .append(twoDecimal(memoryUseRatio))
                    .append("%,系统总内存:")
                    .append(twoDecimal(totalMemory))
                    .append("GB,系统剩余内存:")
                    .append(twoDecimal(freeMemory))
                    .append("GB,该进程占用CPU:")
                    .append(twoDecimal(processCpuLoad))
                    .append("%");
            System.out.println(result.toString());

            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static double twoDecimal(double doubleValue) {
        BigDecimal bigDecimal = new BigDecimal(doubleValue).setScale(2, RoundingMode.HALF_UP);
        return bigDecimal.doubleValue();
    }
}

输出效果:

Java获取CPU占用率、内存占用率_java

标签:twoDecimal,Java,double,totalPhysicalMemorySize,GB,import,占用率,CPU,append
From: https://blog.51cto.com/u_16323196/8680478

相关文章

  • java 操作redis更新子节点数据
    1.引入Jedis依赖确保在你的Java项目中引入了Jedis依赖。你可以使用Maven添加以下依赖:<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.11.1</version></dependency>2.示例代码importredis......
  • Java命名规范
    9点命名规范1.项目名小写单词之间用连接符例如demo-parent,最好不要用单字母表示一个词。比如s-entity,应该用stu-entity2.接口,类型用帕斯卡命名法则,也就是首字母大写,每一个单词首字母都大写。比如stuDao,Seriralizer,SomeMapper3.类中的字段,方法用==驼峰命名法==,就是首字......
  • 【Java集合】双列集合Map详解,让你快速上手!
    Map是一种双列集合,一个元素包含两个值,一个是Key,一个是Value。Map集合中的元素,key和value的数据类型可以相同,也可以不同。一个映射不能包含重复的键;每个键最多只能有一个值。今天我们继续探索Java集合的世界,这次我们要聊的主题是——双列集合Map。首先,让我们来理解一下什么是双......
  • 【Java集合】 Map双列集合详解:让你的代码更高效!
    Map是一种双列集合,一个元素包含两个值,一个是Key,一个是Value。Map集合中的元素,key和value的数据类型可以相同,也可以不同。一个映射不能包含重复的键;每个键最多只能有一个值。今天我们继续探索Java集合的世界,这次我们要聊的主题是——双列集合Map。首先,让我们来理解一下什么是双......
  • Day07 包机制和JavaDoc文件生成
    1.包机制1.1语法格式packagepkg1[.pkg2[.pkg3...]];注意:​ 此句必须放在文件最开始位置1.2提倡的命名格式一般利用公司的域名倒置作为包名如www.baidu.com其包名就推荐命名为com.baidu.www1.3引用包importpackagepkg1[.pkg2[.pkg3...]].(classname|*);​ -......
  • Java 函数式接口
    在Java中,函数式接口(functionalinterface)是指仅包含一个抽象方法的接口。这种类型的接口通常用于表示简单的函数签名,并可与lambda表达式或方法引用结合使用,从而提供一种更简洁、更灵活的编程方式。Java8引入了函数式接口的概念,以及一个新的注解@FunctionalInterface。这个注解......
  • 秦疆的Java课程笔记:51-52 数组 什么是数组&数组的声明和创建
    51什么是数组数组是入门阶段的最后部分。数组的定义:数组是相同类型数据的有序集合。数组描述的是相同类型的若干数据,按照一定的先后次序排序组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。52数组的声明和创建首先必须声明数......
  • 基于Java的智能停车场管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)代码参考数据库参考源码获取前言......
  • 基于Java的足球赛会管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)代码参考数据库参考源码获取前言......
  • 基于Java的财务管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)代码参考数据库参考源码获取前言......