You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发类CPU-Z设备规格获取应用的技术求助

Java官方方案实现类CPU-Z的硬件信息获取

官方支持的核心途径

1. JMX(Java管理扩展)API

通过java.lang.management包的标准Bean,配合OpenJDK/Oracle JDK提供的com.sun.management.OperatingSystemMXBean扩展,可以获取CPU、内存、系统负载等核心硬件/系统信息,这是Java官方提供的最直接的硬件信息获取方式。

2. AWT图形API

利用java.awt.GraphicsEnvironment和java.awt.GraphicsDevice,可以获取显卡的显示设备ID、分辨率等基础显示参数,但无法获取显卡型号、显存这类深层硬件信息。

修正并补充后的示例代码

你提供的代码存在语法错误(比如多余的前置+),且缓存大小的获取逻辑有误,以下是修正后可运行的代码,同时补充了更清晰的信息输出:

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;

public class HardwareInfoCollector {

    public static void main(String[] args) {
        // 初始化系统管理Bean
        OperatingSystemMXBean osBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

        // 输出系统基础信息
        System.out.println("系统厂商: " + osBean.getVendor());
        System.out.println("系统版本: " + osBean.getVersion());
        System.out.println("系统架构: " + osBean.getArch());
        System.out.println("系统名称: " + osBean.getName());

        // 输出CPU相关信息
        System.out.println("\n可用CPU核心数: " + osBean.getAvailableProcessors());
        System.out.println("系统CPU负载: " + String.format("%.2f%%", osBean.getSystemCpuLoad() * 100));
        System.out.println("当前进程CPU负载: " + String.format("%.2f%%", osBean.getProcessCpuLoad() * 100));
        System.out.println("当前进程CPU占用时间(ms): " + osBean.getProcessCpuTime() / 1_000_000);

        // 输出内存信息
        long totalPhysicalMem = osBean.getTotalPhysicalMemorySize();
        long freePhysicalMem = osBean.getFreePhysicalMemorySize();
        System.out.println("\n总物理内存: " + totalPhysicalMem / (1024 * 1024 * 1024) + " GB");
        System.out.println("空闲物理内存: " + freePhysicalMem / (1024 * 1024 * 1024) + " GB");

        // 显卡显示设备信息
        System.out.println("\n=== 显示设备信息 ===");
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] screenDevices = ge.getScreenDevices();

        for (int i = 0; i < screenDevices.length; i++) {
            GraphicsDevice device = screenDevices[i];
            System.out.println("显示设备" + (i+1) + " ID: " + device.getIDstring());
            System.out.println("分辨率: " + device.getDisplayMode().getWidth() + "x" + device.getDisplayMode().getHeight());
        }

        // 官方API局限性说明
        System.out.println("\n注意:CPU缓存大小、硬件温度、CPU频率、显卡型号/显存等信息,Java官方标准API未直接提供,需通过调用系统命令补充:");
        System.out.println("- Windows: 使用wmic命令(如wmic cpu get L2CacheSize, MaxClockSpeed)");
        System.out.println("- Linux: 使用lscpu、sensors等命令");
    }
}

关键说明

  • com.sun.management.OperatingSystemMXBean属于OpenJDK/Oracle JDK的扩展API,不属于Java SE标准,但主流JDK都支持,能获取比标准OperatingSystemMXBean更多的信息。
  • 对于官方API未覆盖的硬件信息(如缓存、温度、显卡型号),只能通过ProcessBuilder调用系统原生命令解析结果,这是Java实现类CPU-Z功能的必要补充。

内容的提问来源于stack exchange,提问作者muhannad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:25:32