首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 取得系統記憶體與磁碟使用資訊:OperatingSystemMXBean 與 File API 實作

     編輯:Java 相關知識

一、取得系統記憶體資訊 (JDK 6+)

使用 com.sun.management.OperatingSystemMXBean(繼承自標準 java.lang.management.OperatingSystemMXBean),需強制轉型。

import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;

public class OSTest {
    public static void main(String[] args) {
        OperatingSystemMXBean osmb = (OperatingSystemMXBean) 
            ManagementFactory.getOperatingSystemMXBean();
        long totalMB = osmb.getTotalPhysicalMemorySize() / 1024 / 1024;
        long freeMB  = osmb.getFreePhysicalMemorySize() / 1024 / 1024;
        System.out.println("系統物理記憶體總計:" + totalMB + " MB");
        System.out.println("系統可用記憶體總計:" + freeMB + " MB");
    }
}

注意:ManagementFactory.getOperatingSystemMXBean() 回傳標準介面,必須轉型為 com.sun.management.OperatingSystemMXBean 才能取得 getTotalPhysicalMemorySize() 等方法。

二、取得磁碟分區使用情況 (JDK 6+)

File.listRoots() 取得所有根分區,getTotalSpace()、getFreeSpace()、getUsableSpace() 分別回傳總容量、剩餘空間、可用空間(考慮寫入權限)。

import java.io.File;

public class DiskFree {
    public static void main(String[] args) {
        File[] roots = File.listRoots();
        for (File root : roots) {
            System.out.println(root.getPath() + " 資訊如下:");
            System.out.println("總容量 = " + root.getTotalSpace() / 1024 / 1024 / 1024 + " GB");
            System.out.println("剩餘空間 = " + root.getFreeSpace() / 1024 / 1024 / 1024 + " GB");
            System.out.println("可用空間 = " + root.getUsableSpace() / 1024 / 1024 / 1024 + " GB");
            System.out.println();
        }
    }
}

三、整合範例:系統資源監控快照

public class SystemSnapshot {
    public static void main(String[] args) {
        // 記憶體
        OperatingSystemMXBean osmb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
        System.out.printf("Memory: Total=%,d MB, Free=%,d MB%n",
            osmb.getTotalPhysicalMemorySize()/1024/1024,
            osmb.getFreePhysicalMemorySize()/1024/1024);
        // 磁碟
        for (File root : File.listRoots()) {
            System.out.printf("Disk %s: Total=%,d GB, Free=%,d GB, Usable=%,d GB%n",
                root.getPath(),
                root.getTotalSpace()/1024/1024/1024,
                root.getFreeSpace()/1024/1024/1024,
                root.getUsableSpace()/1024/1024/1024);
        }
    }
}

適用場景

  • 伺服器健康檢查定時任務。
  • 應用啟動時檢查資源是否充足。
  • 容器化環境監控 Host 資源(需注意容器限制與 Host 實體資源的差異)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved