溫馨提示×

Java日志中如何查看系統資源使用情況

小樊
45
2025-05-02 23:52:30
欄目: 編程語言

在Java應用程序中,你可以使用一些第三方庫來記錄系統資源使用情況,例如:Sigar, oshijava.lang.management。下面是如何使用這些庫來查看系統資源使用情況的示例。

  1. 使用 Sigar 庫:

首先,添加Sigar依賴到你的項目中。如果你使用Maven,可以在pom.xml文件中添加以下依賴:

<dependency>
    <groupId>org.fusesource</groupId>
    <artifactId>sigar</artifactId>
    <version>1.6.4</version>
</dependency>

然后,你可以使用以下代碼來獲取系統資源使用情況:

import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

public class SystemResourceUsage {
    public static void main(String[] args) {
        Sigar sigar = new Sigar();
        try {
            // CPU信息
            CpuInfo[] cpuInfos = sigar.getCpuInfoList();
            System.out.println("CPU信息:");
            for (CpuInfo cpuInfo : cpuInfos) {
                System.out.println(cpuInfo);
            }

            // CPU使用率
            CpuPerc cpuPerc = sigar.getCpuPerc();
            System.out.println("CPU使用率: " + cpuPerc.getCombined());

            // 內存信息
            Mem mem = sigar.getMem();
            System.out.println("內存信息:");
            System.out.println("總內存: " + mem.getTotal() / 1024 / 1024 + " MB");
            System.out.println("可用內存: " + mem.getAvailable() / 1024 / 1024 + " MB");
            System.out.println("已使用內存: " + (mem.getTotal() - mem.getAvailable()) / 1024 / 1024 + " MB");
        } catch (SigarException e) {
            e.printStackTrace();
        } finally {
            sigar.close();
        }
    }
}
  1. 使用 oshi 庫:

首先,添加oshi依賴到你的項目中。如果你使用Maven,可以在pom.xml文件中添加以下依賴:

<dependency>
    <groupId>com.github.oshi</groupId>
    <artifactId>oshi-core</artifactId>
    <version>6.2.2</version>
</dependency>

然后,你可以使用以下代碼來獲取系統資源使用情況:

import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.GlobalMemory;
import oshi.hardware.HardwareAbstractionLayer;

public class SystemResourceUsage {
    public static void main(String[] args) {
        SystemInfo systemInfo = new SystemInfo();
        HardwareAbstractionLayer hal = systemInfo.getHardware();
        CentralProcessor processor = hal.getProcessor();
        GlobalMemory memory = hal.getMemory();

        // CPU信息
        System.out.println("CPU信息:");
        System.out.println(processor);

        // CPU使用率
        double cpuUsage = processor.getSystemCpuLoad() * 100;
        System.out.println("CPU使用率: " + cpuUsage + " %");

        // 內存信息
        System.out.println("內存信息:");
        System.out.println("總內存: " + memory.getTotal() / 1024 / 1024 + " MB");
        System.out.println("可用內存: " + memory.getAvailable() / 1024 / 1024 + " MB");
        System.out.println("已使用內存: " + (memory.getTotal() - memory.getAvailable()) / 1024 / 1024 + " MB");
    }
}
  1. 使用 java.lang.management 庫:
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.OperatingSystemMXBean;

public class SystemResourceUsage {
    public static void main(String[] args) {
        OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
        MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();

        // CPU使用率
        double cpuUsage = osBean.getSystemLoadAverage() * 100;
        System.out.println("CPU使用率: " + cpuUsage + " %");

        // 內存信息
        MemoryUsage heapMemoryUsage = memoryBean.getHeapMemoryUsage();
        System.out.println("內存信息:");
        System.out.println("總內存: " + heapMemoryUsage.getMax() / 1024 / 1024 + " MB");
        System.out.println("已使用內存: " + heapMemoryUsage.getUsed() / 1024 / 1024 + " MB");
        System.out.println("可用內存: " + heapMemoryUsage.getAvailable() / 1024 / 1024 + " MB");
    }
}

這些示例將幫助你查看Java應用程序中的系統資源使用情況。你可以根據自己的需求選擇合適的庫。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女