如何显示系统的CPU和总RAM使用情况?

时间:2010-11-26 05:55:05

标签: java

我不想使用java 1.4代码以百分比和RAM使用百分比显示CPU使用率。我在谷歌搜索它提供了一些与OperatingSystemMXBean相关的代码。但它在java 1.4版本中不受支持。所以请使用java 1.4向我发送代码。

1 个答案:

答案 0 :(得分:0)

首先,我建议你转向java 6.它支持一切。

但如果不是你没有纯粹的java解决方案。还有2个人:

  1. 使用JNI。在这种情况下,您必须为每个支持的平台编写代码并在该平台上进行编译。
  2. 运行执行此操作的外部脚本。 使用ps作为unix: ps -eo pid,ppid,pcpu,vsize,fname,cmd
  3. 根据您的选择编写WMI脚本(在JScript或VBScript中)。

    这是windows的脚本。它使用与unix ps命令相同的格式打印数据。

    var objWMIService = GetObject("winmgmts:\\\\" + "." + "\\root\\CIMV2");
    // get CPU usage per process
    var pid2cpu = new Object();
    var enumItems = new Enumerator(objWMIService.ExecQuery("SELECT IDProcess, PercentProcessorTime FROM Win32_PerfFormattedData_PerfProc_Process"));
    for (; !enumItems.atEnd(); enumItems.moveNext()) {
        var p = enumItems.item();
        pid2cpu[p.IDProcess] = p.PercentProcessorTime;
    }
    //get process info
    enumItems = new Enumerator(objWMIService.ExecQuery("SELECT * FROM Win32_Process"));
    for (; !enumItems.atEnd(); enumItems.moveNext()) {
        var p = enumItems.item();
        var cmd = p.CommandLine==null ? p.Name : p.CommandLine;
        var cpu = pid2cpu[p.ProcessID];
        WScript.echo(p.ProcessID + " " + p.ParentProcessID + " " + cpu + " " + (p.VirtualSize / 1024) + " " + p.Name + " " + cmd);
    }
    

    将其保存到文件proclist.js中并将其作为

    运行
    cscript proclist.js
    

    我还有java包装器决定运行哪个命令,读取命令输出并解析它,但是这个站点的格式不允许放置这么大的附件。此代码即将通过我的blog

    提供

    所以你可以订阅博客或者写博客,我会尽快给你发这个代码。