Sigar 获取CPU和Memory内存等信息使用详解

一、  Sigar详细介绍

Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。

Sigar资料地址:https://support.hyperic.com/display/SIGAR/Home


Sigar提供了一组轻便式接口来收集系统信息,主要信息包含:

● 系统内存,页面交换,cpu,平均负载,运行时间,登录信息;

● 每个进程占用的内存,cpu,帐号信息,状态,参数,环境,打开的文件;

● 文件系统监测和度量;

● 网络接口监测,配置信息和度量;

● TCP和UDP连接表;

● 网络路由表;

 

Sigar适用的平台:


Sigar发布包含的文件如下: 


二、Sigar实例详解

1.  环境准备

   1) 需要架包:sigar-1.6.4.jar

   2)C:\Windows\System32中加入sigar-amd64-winnt.dll             

2.  实例实现

    1) SigarInfoEntity.java (sigar显示信息实体)

package com.lm;
/**
 * 数据显示实体
 * @author ThinkPad
 *
 */
public class SigarInfoEntity {
	private String value;
	private String name;
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public SigarInfoEntity(String value, String name) {
		super();
		this.value = value;
		this.name = name;
	}
	
	public SigarInfoEntity(){
		
	}
}

    2) SIgarUtils.java (sigar获取信息工具类)

package com.lm;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.FileSystemUsage;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.OperatingSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
import org.hyperic.sigar.Swap;

/**
 * sigar工具类
 * 
 * @author ThinkPad
 *
 */
public class SigarUtils {
	private static Sigar sigar;

	/**
	 * 获取sigar实体
	 * 
	 * @return
	 */
	public static Sigar getInstance() {
		if (null == sigar) {
			sigar = new Sigar();
		}
		return sigar;
	}

	/**
	 * 1.获取系统信息和jvm虚拟机信息
	 * 
	 * @return
	 * @throws UnknownHostException
	 */
	public static List<SigarInfoEntity> getJvmInfos()
			throws UnknownHostException {
		List<SigarInfoEntity> jvmInfoList = new ArrayList<SigarInfoEntity>();
		Runtime r = Runtime.getRuntime();
		// 系统配置属性
		Properties sysProps = System.getProperties();
		// java对ip封装的对象
		InetAddress addr;
		addr = InetAddress.getLocalHost();

		Map<String, String> envInfoMap = System.getenv();
		String userName = envInfoMap.get("USERNAME");// 获取用户名
		String computerName = envInfoMap.get("COMPUTERNAME");// 获取计算机名
		String userDomain = envInfoMap.get("USERDOMAIN");// 获取计算机域名

		jvmInfoList.add(new SigarInfoEntity(userName, "获取用户名"));
		jvmInfoList.add(new SigarInfoEntity(computerName, "获取计算机名"));
		jvmInfoList.add(new SigarInfoEntity(userDomain, "获取计算机域名"));

		jvmInfoList.add(new SigarInfoEntity(addr.getHostAddress(), "获取Ip"));
		jvmInfoList.add(new SigarInfoEntity(addr.getHostName(), "获取主机名称"));

		jvmInfoList.add(new SigarInfoEntity(String.valueOf(r.totalMemory()),
				"JVM总内存"));
		jvmInfoList.add(new SigarInfoEntity(String.valueOf(r.freeMemory()),
				"JVM剩余内存"));
		jvmInfoList.add(new SigarInfoEntity(String.valueOf(r
				.availableProcessors()), "jvm处理器个数"));

		jvmInfoList.add(new SigarInfoEntity(sysProps
				.getProperty("java.version"), "Java的运行环境版本"));
		jvmInfoList.add(new SigarInfoEntity(
				sysProps.getProperty("java.vendor"), "Java的运行环境供应商"));

		jvmInfoList.add(new SigarInfoEntity(sysProps
				.getPr
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值