centos

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
看了该问题的人还看了