最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用oshi獲取當(dāng)前服務(wù)器狀態(tài)cpu、內(nèi)存、存儲(chǔ)等核心信息方式

 更新時(shí)間:2025年09月26日 09:16:34   作者:一碼歸一碼@  
OSHI是基于JNA的跨平臺(tái)系統(tǒng)硬件信息庫,無需額外依賴,支持Windows/Linux/macOS/UNIX等系統(tǒng),提供CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、電池等實(shí)時(shí)監(jiān)控?cái)?shù)據(jù),適用于資源監(jiān)控及可視化,含GUI示例與相關(guān)項(xiàng)目鏈接

簡(jiǎn)介

OSHI 是基于 JNA 的(本地)操作系統(tǒng)和硬件信息庫。它不需要安裝任何其他額外的本地庫,旨在提供一種跨平臺(tái)的實(shí)現(xiàn)來檢索系統(tǒng)信息,例如操作系統(tǒng)版本、進(jìn)程、內(nèi)存和 CPU 使用率、磁盤和分區(qū)、設(shè)備、傳感器等。

使用 OSHI 可以對(duì)應(yīng)用程序進(jìn)行監(jiān)控,可以對(duì)應(yīng)用程序所在的服務(wù)器資源進(jìn)行監(jiān)控,還可以監(jiān)控到其他許多指標(biāo),如下:

  • 1、計(jì)算機(jī)系統(tǒng)和固件,底板
  • 2、操作系統(tǒng)和版本 / 內(nèi)部版本
  • 3、物理(核心)和邏輯(超線程)CPU,處理器組,NUMA 節(jié)點(diǎn)
  • 4、系統(tǒng)和每個(gè)處理器的負(fù)載百分比和滴答計(jì)數(shù)器
  • 5、CPU 正常運(yùn)行時(shí)間,進(jìn)程和線程
  • 6、進(jìn)程正常運(yùn)行時(shí)間,CPU,內(nèi)存使用率,用戶 / 組,命令行
  • 7、已使用 / 可用的物理和虛擬內(nèi)存
  • 8、掛載的文件系統(tǒng)(類型,可用空間和總空間)
  • 9、磁盤驅(qū)動(dòng)器(型號(hào),序列號(hào),大小)和分區(qū)
  • 10、網(wǎng)絡(luò)接口(IP,帶寬輸入 / 輸出)
  • 11、電池狀態(tài)(電量百分比,剩余時(shí)間,電量使用情況統(tǒng)計(jì)信息)
  • 12、連接的顯示器(帶有 EDID 信息)
  • 13、USB 設(shè)備
  • 14、傳感器(溫度,風(fēng)扇速度,電壓)

支持的平臺(tái):

  • Windows
  • Linux
  • macOS
  • UNIX (AIX, FreeBSD, OpenBSD, Solaris)

相關(guān)資料

maven依賴

       <dependency>
            <groupId>com.github.oshi</groupId>
            <artifactId>oshi-core</artifactId>
            <version>6.3.2</version>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>5.12.1</version>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna-platform</artifactId>
            <version>5.12.1</version>
        </dependency>

oshi-官方示例

此外,該oshi-demo模塊包括一個(gè)OshiGui類,它實(shí)現(xiàn)了一個(gè)基本的 Swing GUI,為在 UI、監(jiān)控或警報(bào)應(yīng)用程序中使用 OSHI 的潛在可視化提供建議,如下所示。

有關(guān)基于此方法的更高級(jí) GUI,請(qǐng)參閱MooInfo 項(xiàng)目。

獲取CUP信息代碼

獲取時(shí)與windows窗口等查看CUP利用率的信息有差異,本身CUP利用率存在很大的波動(dòng)。

public static CpuEntity getCpu() throws InterruptedException {
        SystemInfo systemInfo = new SystemInfo();
        GlobalConfig.set(GlobalConfig.OSHI_OS_WINDOWS_CPU_UTILITY, Boolean.TRUE);
        CentralProcessor processor = systemInfo.getHardware().getProcessor();
        long[] prevTicks = processor.getSystemCpuLoadTicks();
        // 睡眠1s
        TimeUnit.SECONDS.sleep(1);
        long[] ticks = processor.getSystemCpuLoadTicks();
        long nice = ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()];
        long irq = ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()];
        long softirq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];
        long steal = ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];
        long cSys = ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];
        long user = ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()];
        long iowait = ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];
        long idle = ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()];
        long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal;
        CpuEntity cpuEntity = new CpuEntity();
        cpuEntity.setSys(new DecimalFormat("#.##").format(cSys * 1.0 / totalCpu));
        cpuEntity.setUser(new DecimalFormat("#.##").format(user * 1.0 / totalCpu));
        cpuEntity.setWait(new DecimalFormat("#.##").format(iowait * 1.0 / totalCpu));
        cpuEntity.setWait(new DecimalFormat("#.##").format(idle * 1.0 / totalCpu));
        //  user + system + nice + iowait + irq + softirq + steal
        long cpuUtilization = user + nice + cSys + iowait + irq + softirq + steal;
        cpuEntity.setCombined(new DecimalFormat("#.##").format((cpuUtilization * 1.0 / totalCpu)*100));
        return cpuEntity;
    }

獲取內(nèi)存信息

    public static MemoryEntity getMemory() {
        OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
        MemoryEntity memoryEntity = new MemoryEntity();
        memoryEntity.setMemTotal(osmxb.getTotalPhysicalMemorySize() / 1024 / 1024 / 1024);
        memoryEntity.setMemUsed((osmxb.getTotalPhysicalMemorySize() - osmxb.getFreePhysicalMemorySize()) / 1024 / 1024 / 1024);
        return memoryEntity;
    }

獲取磁盤信息

  			File[] roots = File.listRoots();
            Long useSum = 0l;
            Long totalSum = 0l;
            for (File file : roots) {
                long free = file.getFreeSpace();
                long total = file.getTotalSpace();
                long use = total - free;
                useSum += change(use);
                totalSum += change(total);
            }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring AbstractRoutingDatasource 動(dòng)態(tài)數(shù)據(jù)源的實(shí)例講解

    Spring AbstractRoutingDatasource 動(dòng)態(tài)數(shù)據(jù)源的實(shí)例講解

    本文介紹如何使用 Spring AbstractRoutingDatasource 基于上下文動(dòng)態(tài)切換數(shù)據(jù)源,因此我們會(huì)讓查找數(shù)據(jù)源邏輯獨(dú)立于數(shù)據(jù)訪問之外
    2021-07-07
  • JavaSE實(shí)戰(zhàn)之酒店訂房系統(tǒng)的實(shí)現(xiàn)

    JavaSE實(shí)戰(zhàn)之酒店訂房系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaSE實(shí)現(xiàn)酒店訂房系統(tǒng),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaSE開發(fā)有一定的幫助,需要的可以參考一下
    2022-07-07
  • Java面向?qū)ο笕馕鲋畉his關(guān)鍵字+構(gòu)造方法+標(biāo)準(zhǔn)JavaBean

    Java面向?qū)ο笕馕鲋畉his關(guān)鍵字+構(gòu)造方法+標(biāo)準(zhǔn)JavaBean

    本文介紹了Java面向?qū)ο蟮母呒?jí)內(nèi)容,包括無參構(gòu)造方法和帶參構(gòu)造方法,標(biāo)準(zhǔn)JavaBean類是企業(yè)開發(fā)中用于封裝數(shù)據(jù)的規(guī)范類,必須遵循特定的命名和方法規(guī)范,通過本文學(xué)習(xí),讀者可以掌握這些關(guān)鍵概念并應(yīng)用到實(shí)際開發(fā)中,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • java中的OPT算法實(shí)現(xiàn)方式

    java中的OPT算法實(shí)現(xiàn)方式

    這篇文章主要介紹了java中的OPT算法實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 深入理解Java中的裝箱和拆箱

    深入理解Java中的裝箱和拆箱

    這篇文章主要介紹了深入理解Java中的裝箱和拆箱,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java中的IO流

    java中的IO流

    這篇文章主要介紹了java中的IO流的相關(guān)資料,需要的朋友可以參考下文
    2021-08-08
  • java打印日志的幾種方式總結(jié)

    java打印日志的幾種方式總結(jié)

    這篇文章主要介紹了java打印日志的幾種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java SpringMVC的自定義異常類

    Java SpringMVC的自定義異常類

    這篇文章主要為大家詳細(xì)介紹了SpringMVC的自定義異常類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java使用抽象工廠模式實(shí)現(xiàn)的肯德基消費(fèi)案例詳解

    Java使用抽象工廠模式實(shí)現(xiàn)的肯德基消費(fèi)案例詳解

    這篇文章主要介紹了Java使用抽象工廠模式實(shí)現(xiàn)的肯德基消費(fèi)案例,較為詳細(xì)的分析了抽象工廠模式的定義、原理并結(jié)合實(shí)例形式分析了Java使用抽象工廠模式實(shí)現(xiàn)肯德基消費(fèi)案例的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • springboot中實(shí)現(xiàn)通過后臺(tái)創(chuàng)建臨時(shí)表

    springboot中實(shí)現(xiàn)通過后臺(tái)創(chuàng)建臨時(shí)表

    這篇文章主要介紹了springboot中實(shí)現(xiàn)通過后臺(tái)創(chuàng)建臨時(shí)表操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論

余干县| 霸州市| 电白县| 乌恰县| 潮安县| 稻城县| 大厂| 闸北区| 民丰县| 朔州市| 镇赉县| 闽清县| 增城市| 天峻县| 昂仁县| 沙湾县| 前郭尔| 留坝县| 文水县| 富平县| 青铜峡市| 涟水县| 江源县| 保定市| 柯坪县| 绥江县| 颍上县| 虹口区| 镇原县| 万州区| 徐州市| 吐鲁番市| 太白县| 洛南县| 扶绥县| 宜都市| 信阳市| 临邑县| 漯河市| 麟游县| 义乌市|