sigar

边健
2023-12-01
 

使用sigar其实很简单,首先要在项目中添加sigar.jar以及对应系统的

库文件(xp为例,添加pdh.dll、sigar-x86-winnt.dll、sigar-x86-winnt.lib)

 

sigar包以及库文件下载地址:http://download.csdn.net/source/2344017

 

//接口定义

public interface LoadInfo { 
 //获取cpu使用率
 public String getCpuInfo();
 // 获取系统内存使用量
 public String getRamInfo();
 //获取网络使用流量
 public String getNetworkInfo();
 //获取操作系统信息
 public String getSystemInfo();
 // 获取运行环境信息
 public String getRunLoadInfo();
 //获取虚拟机剩余内存
 public String getVmRamInfo();
}

 

 

//以下是接口的实现

import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.Properties;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.SigarNotImplementedException;

public class LoadInfoImpl implements LoadInfo {

 /**
  * 创建sigar对象用来获取系统信息
  */
 private Sigar sigar = new Sigar();;
 private CpuPerc cpuCerc;
 private Properties props = System.getProperties();
 private Mem mem;

 public String getCpuInfo() {
  try {
   /**
    * 获取cpu信息
    */
   cpuCerc = sigar.getCpuPerc();
   /**
    * 保留两位小数
    */
   DecimalFormat df = new DecimalFormat("#.00");
   /**
    * 如果cpu使用率为零时,不保留小数位
    */
   if (cpuCerc.getCombined() == 0) {
    return 0 + "%";
   } else {
    return df.format(cpuCerc.getCombined() * 100) + "%";
   }
  } catch (SigarException e) {
   e.printStackTrace();
  }
  return String.valueOf(cpuCerc.getCombined());
 }
 
 public String getRamInfo() {
  try {
   /**
    * 获取系统内存信息
    */
   mem = sigar.getMem();
  } catch (SigarException e) {
   e.printStackTrace();
  }
  /**
   * 返回系统内存使用量
   */
  return mem.getUsed() / 1024 / 1024 + "M";
 }

 public String getNetworkInfo() {
  String ifNames[]=null;
  String txbyte=null;
  try {
   ifNames = sigar.getNetInterfaceList();
  } catch (SigarException e2) {
   e2.printStackTrace();
  }
   String name = ifNames[0];
   try {
    /**
     * 获取网络流量
     */
    NetInterfaceStat ifstat = sigar.getNetInterfaceStat(name);
    /**
     * 获取发送的总字节数
     */
    txbyte=ifstat.getTxBytes()+"byte";
   } catch (SigarNotImplementedException e) {
   } catch (SigarException e) {
    System.out.println(e.getMessage());
   }
  return txbyte;
 }

 public String getSystemInfo() {
  /**
   * 获取操作系统名称
   */
  return props.getProperty("os.name");
 }

 public String getRunLoadInfo() {
  /**
   * 获取运行环境信息
   */
  String runload=props.getProperty("java.vm.name");
  return runload;
 }

 public String getVmRamInfo() {
  /**
   * 获取虚拟机剩余内存
   */
  return Runtime.getRuntime().freeMemory() / (1024 * 1024) + "M";
 }
}

 类似资料:

相关阅读

相关文章

相关问答