OShi获取系统信息

package com.example.demo;

import cn.hutool.core.lang.Console;
import cn.hutool.system.oshi.CpuInfo;
import cn.hutool.system.oshi.OshiUtil;
import oshi.hardware.CentralProcessor;
import oshi.hardware.GlobalMemory;

import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class SystemInfo {
    private static final DecimalFormat LOAD_FORMAT = new DecimalFormat("#.00");


    public static void main(String[] args) throws Exception {
        getCpuUsed();
        getMemoryUsed();
        getDiskUsed();
        getProcessorInfo();

    }

    private static void getProcessorInfo() {
        CentralProcessor processor = OshiUtil.getProcessor();
        CentralProcessor.ProcessorIdentifier processorIdentifier = processor.getProcessorIdentifier();
        System.out.println("处理器名称: " + processorIdentifier.getName());
        System.out.println("物理处理器: " + processor.getPhysicalProcessorCount());
        System.out.println("逻辑处理器: " + processor.getLogicalProcessorCount());
    }

    private static void getCpuUsed() {
        CpuInfo cpuInfo = OshiUtil.getCpuInfo();

        Console.log("CPU核心数量 : ", cpuInfo.getCpuNum());
        String cpuUsage = LOAD_FORMAT.format(100 - cpuInfo.getFree());
        // 当前的CPU占用
        Console.log("CPU占用 : ", cpuUsage);
        // CPU利用率
        Console.log("CPU利用率 : ", cpuUsage);
        // CPU剩余可用
        Console.log("CPU剩余可用 : ", cpuInfo.getFree());
        System.out.println("***************");

    }

    private static void getMemoryUsed() {
        GlobalMemory memory = OshiUtil.getMemory();
        long total = memory.getTotal();
        BigDecimal memoryGB = new BigDecimal(total).divide(new BigDecimal(1024 * 1024 * 1024), 0, RoundingMode.HALF_UP);
        Console.log("总内存大小 : ", memoryGB);
        long available = memory.getAvailable();
        BigDecimal residue = new BigDecimal(available).divide(new BigDecimal(1024 * 1024 * 1024), 1, RoundingMode.HALF_UP);
        Console.log("剩余内存 : ", residue);
        BigDecimal memoryUsage = memoryGB.subtract(residue);
        Console.log("已使用内存 : ", memoryUsage);
        System.out.println("***************");
    }

    public static void getDiskUsed() {
        File[] roots = File.listRoots();

        for (File root : roots) {
            System.out.println("Drive: " + root);
            BigDecimal total = new BigDecimal(root.getTotalSpace()).divide(new BigDecimal(1024 * 1024 * 1024), 1, RoundingMode.HALF_UP);
            System.out.println("总空间: " + total);
            BigDecimal usableSpace = new BigDecimal(root.getUsableSpace()).divide(new BigDecimal(1024 * 1024 * 1024), 1, RoundingMode.HALF_UP);
            System.out.println("已使用空间: " + usableSpace);
            BigDecimal freeSpace = new BigDecimal(root.getTotalSpace() - root.getUsableSpace()).divide(new BigDecimal(1024 * 1024 * 1024), 1, RoundingMode.HALF_UP);
            System.out.println("剩余空间: " + freeSpace);
        }
        System.out.println("***************");
    }
}

posted @   XSWClevo  阅读(342)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示