利用 OSHI获取机器的硬件信息

什么是 OSHI?

OSHI(Operating System and Hardware Information)是一个开源的Java库,用于获取操作系统和硬件的详细信息。它提供了一种简单而统一的方式来访问系统的各种信息,如CPU、内存、磁盘、网络接口、传感器等。OSHI的设计目标是跨平台兼容,因此它可以在Windows、Linux、macOS等多个操作系统上运行。

OSHI 的应用场景

  1. 系统监控:OSHI可以用于开发系统监控工具,实时获取和显示系统的硬件和操作系统状态,如CPU使用率、内存使用情况、磁盘读写速度等。

  2. 性能分析:开发人员可以使用OSHI来分析应用程序的性能,识别潜在的瓶颈和资源消耗点。

  3. 硬件信息收集:OSHI可以用于收集和记录硬件信息,帮助IT管理员进行资产管理和维护。

  4. 诊断工具:OSHI可以帮助开发诊断工具,检测系统的健康状态,并在出现异常时提供警报。

OSHI 代码工程

要在Java项目中使用OSHI库,首先需要将其添加为项目的依赖。以下是通过Maven和Gradle添加OSHI依赖的示例:

Maven

pom.xml中添加以下依赖:

xml 复制代码
<dependency>
    <groupId>com.github.oshi</groupId>
    <artifactId>oshi-core</artifactId>
    <version>6.2.2</version>
</dependency>

示例代码

以下是一个使用OSHI库获取系统信息的简单示例:

arduino 复制代码
package com.et;

import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.GlobalMemory;
import oshi.software.os.OperatingSystem;

public class OshiExample {
    public static void main(String[] args) {
        // Create a SystemInfo object
        SystemInfo systemInfo = new SystemInfo();

        // Get CPU information
        CentralProcessor processor = systemInfo.getHardware().getProcessor();
        System.out.println("CPU Logical Processor Count: " + processor.getLogicalProcessorCount());
        System.out.println("CPU Physical Processor Count: " + processor.getPhysicalProcessorCount());
        System.out.println("CPU Vendor: " + processor.getProcessorIdentifier().getVendor());
        System.out.println("CPU Name: " + processor.getProcessorIdentifier().getName());

        // Get memory information
        GlobalMemory memory = systemInfo.getHardware().getMemory();
        System.out.println("Total Memory: " + formatBytes(memory.getTotal()));
        System.out.println("Available Memory: " + formatBytes(memory.getAvailable()));

        // Get operating system information
        OperatingSystem os = systemInfo.getOperatingSystem();
        System.out.println("Operating System: " + os.toString());
        System.out.println("System Boot Time: " + os.getSystemBootTime());
    }

    // Format bytes into a readable format
    private static String formatBytes(long bytes) {
        if (bytes < 1024) return bytes + " B";
        int exp = (int) (Math.log(bytes) / Math.log(1024));
        char pre = "KMGTPE".charAt(exp - 1);
        return String.format("%.1f %sB", bytes / Math.pow(1024, exp), pre);
    }
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

总结

OSHI是一个功能强大且易于使用的Java库,适用于需要获取系统硬件和操作系统信息的各种应用场景。通过OSHI,开发人员可以轻松地实现系统监控、性能分析、硬件信息收集等功能。其跨平台的特性使得它在不同操作系统上都能稳定运行,是开发系统工具的理想选择。

相关推荐
欧恩意14 小时前
【Tools】Java反汇编工具推荐
java·汇编
苍何14 小时前
字节发力,豆包大模型2.0 震撼来袭(附 Trae 实测)
后端
苍何14 小时前
不会剪辑的人,开始用 AI 批量出爆款了
后端
苍何14 小时前
百度 APP 正式接入 OpenClaw,所有人限时免费!
后端
寻星探路14 小时前
【JVM 终极通关指南】万字长文从底层到实战全维度深度拆解 Java 虚拟机
java·开发语言·jvm·人工智能·python·算法·ai
lbb 小魔仙14 小时前
【Java】Java 实战项目:手把手教你写一个电商订单系统
android·java·python
星河耀银海14 小时前
Java安全开发实战:从代码防护到架构安全
java·安全·架构
青云交14 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市水资源管理与节水策略制定中的应用
java·java 大数据·java 大数据可视化·城市水资源管理·spark 数据清洗·echarts 热力图·管网漏损控制
紫陌涵光15 小时前
112. 路径总和
java·前端·算法
workflower15 小时前
多变量时间序列预测
java·hadoop·nosql·需求分析·big data·结对编程