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

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

时间:2023-07-04 17:15:35浏览次数:40  
标签:twoDecimal Java double totalPhysicalMemorySize GB 占用率 CPU append

    @Test
    public 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 double twoDecimal(double doubleValue) {
        BigDecimal bigDecimal = new BigDecimal(doubleValue).setScale(2, RoundingMode.HALF_UP);
        return bigDecimal.doubleValue();
    }

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

 

标签:twoDecimal,Java,double,totalPhysicalMemorySize,GB,占用率,CPU,append
From: https://www.cnblogs.com/wanbiao/p/17487720.html

相关文章

  • 七月四号Java学习
    今天在Java中学习到字面量和变量   ......
  • Java-基本语法回顾总结[25-36]
    常用的JVM启动参数有哪些?线程安全的理解?守护线程的理解?threadlocal的底层原理(25)常用的JVM启动参数有哪些?(26)线程安全的理解?(27)守护线程的理解?(28)threadlocal的底层原理(29)并发、并行与串行之间的区别?(30)Java死锁应如何避免?(31)......
  • java后台删除当前节点及其子节点-递归
    一、表设计 二、entityimportcom.fasterxml.jackson.annotation.JsonIgnore;importcom.joyoung.cloud.security.common.entity.BaseEntity;importio.swagger.annotations.ApiModel;importio.swagger.annotations.ApiModelProperty;importlombok.Data;importlombok......
  • Java数组
    Java数组数组概述1.数组概述1.相同类型变量的有序集合2.数组的声明和创建1.dataType[]arrayRefVar2.dataType[]arrayRefVar=newdataType[arraySize]内存分析1.声明数组int[]array=null;在栈中声明了array2.创建数组array=newint[10];在......
  • java+geotools (geotools for java)
    geotools所需的依赖,在pom.xml引入;<dependencies><!--forgeotoolsbegin--><!--处理空间数据--><!--geotools主要依赖--><dependency><groupId>org.geotools</groupId><artifa......
  • java工具类static静态方法读取yml配置
    当我们需要在工具类中获取yml配置的时候,由于变量是staic导致获取不到yml配置因为spring加载静态方法比IOC早,所以不能直接使用@Value注解读取yml配置,读取结果是null。@ComponentpublicclassTestUtil{//使用@Value注解读取yml配置的数据@Value("${test.url}")......
  • 【大厂面试必问】Java8 新特性
    博主介绍:✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家✌......
  • java限流-基于redis+lua
    redis是线程安全的,天然具有线程安全的特性,支持原子性操作,限流服务不仅需要承接超高QPS,还要保证限流逻辑的执行层面具备线程安全的特性,利用Redis这些特性做限流,既能保证线程安全,也能保证性能。结合上面的流程图,这里梳理出一个整体的实现思路:编写lua脚本,指定入参的限流规则,比如对......
  • javascript现代编程系列教程之X——javascript人工智能
    JavaScript在人工智能(AI)领域的应用主要体现在以下几个方面:浏览器端的机器学习:TensorFlow.js是一个在浏览器中运行的JavaScript机器学习库,它允许开发者训练和部署机器学习模型。这使得开发者可以在浏览器端进行实时的机器学习任务,无需将数据传输到服务器端,从而提高了用户的隐......
  • (一)Java中的IO操作—— File类
    一、File类在系统中用户通过文件系统所提供的系统调用实施对文件的操作。最基本的文件操作有:创建文件、删除文件、读文件、写文件、截断文件和设置文件的读/写位置。在Java中使用File类来作为目录或者文件的表示形式,也就是说我们想要表示一个文件,构造一个File对象即可。构......