标签: oshi

Java (Windows) - 通过进程 ID,获取内存使用情况、磁盘使用情况、网络使用情况

我一直在研究为特定过程实现以下数据的最佳方法:

  1. CPU使用率
  2. 内存使用情况
  3. 磁盘使用情况
  4. 网络使用

我决定使用 OSHI(操作系统和硬件信息)API。对我来说不幸的是,这个 API 没有给我开箱即用的信息,它需要一些关于如何计算的基本知识,例如每个进程的 CPU 使用率。

我的问题是:如何通过进程 id 获取内存、磁盘、网络使用情况?

使用以下每个进程的 CPU 使用数据示例

例如:

要获取 claculator.exe 运行进程的实际 CPU 使用率:

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

public class processCPUusage {
    public static void main(String[] args) throws InterruptedException {
        OSProcess process;
        long currentTime,previousTime = 0,timeDifference;
        double cpu;
        int pid = 7132;
        SystemInfo si = new SystemInfo();
        OperatingSystem os = si.getOperatingSystem();
        CentralProcessor processor = si.getHardware().getProcessor();
        int cpuNumber = processor.getLogicalProcessorCount();
        boolean processExists = true;
        while (processExists) {
            process …
Run Code Online (Sandbox Code Playgroud)

java windows jna oshi

5
推荐指数
1
解决办法
1858
查看次数

使用 Oshi Java 库获取 Windows PE 的硬件和操作系统信息

我无法在 Windows PE 上运行我的 Java 应用程序。基本上,我的应用程序获取硬件数据和操作系统信息。为此,我使用了 Oshi Java 库,但 Oshi 使用了不断崩溃的 JNA 库。

注意:我的应用程序在任何其他操作系统上运行良好,但无法在 Windows PE 上运行。我正在使用的代码如下:

HardwareAbstractionLayer hal = si.getHardware();
OperatingSystem os = si.getOperatingSystem();

hal.getComputerSystem();
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

java jna winpe oshi

2
推荐指数
1
解决办法
625
查看次数

如何使用java获取CPU使用率?

我想获取CPU使用率来使用java连续更新我的数据库。在第一个循环中,此代码可读取正确的 CPU 使用情况。之后,它返回小于 0 的错误值。所以,我卡住了。

我用的是jdk 1.8.124。

请让我知道如何连续获取CPU使用率。

import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.HardwareAbstractionLayer;
Run Code Online (Sandbox Code Playgroud)

源代码

public static void main(String[] args) {
  OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory
      .getOperatingSystemMXBean();

  while (true) {
    System.out.println(bean.getProcessCpuLoad());
    System.out.println(bean.getSystemCpuLoad());
        try {
            Thread.sleep(3000);
        }
        catch (Exception e){
            System.out.println(e.toString());
            break;
        }
  }

}
Run Code Online (Sandbox Code Playgroud)

java cpu-usage oshi

2
推荐指数
1
解决办法
6097
查看次数

标签 统计

java ×3

oshi ×3

jna ×2

cpu-usage ×1

windows ×1

winpe ×1