Java获取CPU利用率(Linux版本和Windows版本)

Linux版本:http://www.iteye.com/problems/19143

Windows版本:http://kakaluyi.iteye.com/blog/211492

Java获取CPU利用率主要通过运行所在环境的命令,然后解析得到的信息,从而获得CPU利用率,特汇总Linux版本和Windows版本如下。


Linux:

Linux系统中可以用top命令查看进程使用CPU和内存情况,通过Runtime类的exec()方法系统命令"top”,获取"top"的输出,从而得到CPU和内存的使用情况。对本程序稍加改动,还可以得到内存的使用情况。

/**
* @author wanlh
* @version 1.0
*/

import java.io.*;


public class CpuUsage {
public double getCpuUsage() throws Exception {
  double cpuUsed = 0;
  Runtime rt = Runtime.getRuntime();
  Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令
  BufferedReader in = null;
  try {
   in = new BufferedReader(new InputStreamReader(p.getInputStream()));
   String str = null;
   String[] strArray = null;
   while ((str = in.readLine()) != null) {
    int m = 0;
    if (str.indexOf(" R ") != -1 && str.indexOf("top") == -1) {// 只分析正在运行的进程,top进程本身除外
     strArray = str.split(" ");
     for (String tmp : strArray) {
      if (tmp.trim().length() == 0)
       continue;
      if (++m == 9) {// 第9列为CPU的使用百分比(RedHat 9)
       cpuUsed += Double.parseDouble(tmp);
      }
     }
     // System.out.println(str);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   in.close();
  }
  return cpuUsed;
}

public static void main(String[] args) throws Exception {
  CpuUsage cpu = new CpuUsage();
  System.out.println("cpu used:" + cpu.getCpuUsage() + "%");
}
}


Windows

package com.amgkaka.performance;

/** *//**
 * 监视信息的JavaBean类.
 * @author  amg
 * @version 1.0
 * Creation date: 2008-4-25 - 上午10:37:00
 */
public class MonitorInfoBean {
    /** *//** 可使用内存. */
    private long totalMemory;
    
    /** *//** 剩余内存. */
    private long freeMemory;
    
    /** *//** 最大可使用内存. */
    private long maxMemory;
    
    /** *//** 操作系统. */
    private String osName;
    
    /** *//** 总的物理内存. */
    private long totalMemorySize;
    
    /** *//** 剩余的物理内存. */
    private long freePhysicalMemorySize;
    
    /** *//** 已使用的物理内存. */
    private long usedMemory;
    
    /** *//** 线程总数. */
    private int totalThread;
    
    /** *//** cpu使用率. */
    private double cpuRatio;

    public long getFreeMemory() {
        return freeMemory;
    }

    public void setFreeMemory(long freeMemory) {
        this.freeMemory = freeMemory;
    }

    public long getFreePhysicalMemorySize() {
        return freePhysicalMemorySize;
    }

    public void setFreePhysicalMemorySize(long freePhysicalMemorySize) {
        this.freePhysicalMemorySize = freePhysicalMemorySize;
    }

    public long getMaxMemory() {
        return maxMemory;
    }

    public void setMaxMemory(long maxMemory) {
        this.maxMemory = maxMemory;
    }

    public String getOsName() {
        return osName;
    }

    public void setOsName(String osName) {
        this.osName = osName;
    }

    public long getTotalMemory() {
        return totalMemory;
    }

    public void setTotalMemory(long totalMemory) {
        this.totalMemory = totalMemory;
    }

    public long getTotalMemorySize() {
        return totalMemorySize;
    }

    public void setTotalMemorySize(long totalMemorySize) {
        this.totalMemorySize = totalMemorySize;
    }

    public int getTotalThread() {
        return totalThread;
    }

    public void setTotalThread(int totalThread) {
        this.totalThread = totalThread;
    }

    public long getUsedMemory() {
        return usedMemory;
    }

    public void setUsedMemory(long usedMemory) {
        this.usedMemory = usedMemory;
    }

    public double getCpuRatio() {
        return cpuRatio;
    }

    public void setCpuRatio(double cpuRatio) {
        this.cpuRatio = cpuRatio;
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值