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());
Console.log("CPU占用 : ", cpuUsage);
Console.log("CPU利用率 : ", cpuUsage);
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("***************");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本