当前位置 : 主页 > 编程语言 > c++ >

sigar使用demo

来源:互联网 收集:自由互联 发布时间:2021-07-03
cpu 内存 信息获取 import org.hyperic.sigar.*;/** * Created by paul on 2017/9/8. * * Sigar.jar下载地址:http://sigar.hyperic.com * // sigar-amd64-winnt\X64\1.6.5.130 把dll文件存放在 系统配置的path路径下 * 虚拟机信息
cpu 内存 信息获取
import org.hyperic.sigar.*;

/**
 * Created by paul on 2017/9/8.
 *
 * Sigar.jar下载地址:http://sigar.hyperic.com
 * // sigar-amd64-winnt\X64\1.6.5.130 把dll文件存放在 系统配置的path路径下
 * 虚拟机信息获取
 */
public class JvmKit {

    public static String getJvmInfo(){
        Runtime r = Runtime.getRuntime();
        System.out.println("JVM可以使用的总内存  " + r.totalMemory());
        System.out.println("JVM可以使用的剩余内存 "+ r.freeMemory());
        System.out.println("JVM可以使用的处理器个数 "+ r.availableProcessors());
        return  "";
    }


    public static void getMemoryInfo() throws SigarException {
        Sigar sigar = new Sigar();
        Mem mem = sigar.getMem();
        float total = mem.getTotal();
        float used = mem.getUsed();
        // 内存总量
        System.out.println("内存总量:   " + mem.getTotal() / 1024L/1024L + " M av");
        // 当前内存使用量
        System.out.println("当前内存使用量:    " + mem.getUsed() / 1024L/1024L + " M used");
        // 当前内存剩余量
        System.out.println("当前内存剩余量:    " + mem.getFree() / 1024L/1024L + " M free");
        // 当前内存使用率
        System.out.println("内存使用率:    " +used/total*100+"%");
        Swap swap = sigar.getSwap();
        // 交换区总量
        System.out.println("交换区总量:  " + swap.getTotal() / 1024L/1024L + "M av");
        // 当前交换区使用量
        System.out.println("当前交换区使用量:   " + swap.getUsed() / 1024L/1024L + "M used");
        // 当前交换区剩余量
        System.out.println("当前交换区剩余量:   " + swap.getFree() / 1024L/1024L + "M free");
    }


    public static void getCpuPerc(CpuPerc cpu) {
        System.out.println("CPU用户使用率:   " + CpuPerc.format(cpu.getUser()));// 用户使用率
        System.out.println("CPU系统使用率:   " + CpuPerc.format(cpu.getSys()));// 系统使用率
        System.out.println("CPU当前等待率:   " + CpuPerc.format(cpu.getWait()));// 当前等待率
        System.out.println("CPU当前错误率:   " + CpuPerc.format(cpu.getNice()));//
        System.out.println("CPU当前空闲率:   " + CpuPerc.format(cpu.getIdle()));// 当前空闲率
        System.out.println("CPU总的使用率:   " + CpuPerc.format(cpu.getCombined()));// 总的使用率
    }

    public static void getCpuInfo() throws SigarException {
        Sigar sigar = new Sigar();
        CpuInfo infos[] = sigar.getCpuInfoList();
        CpuPerc cpuList[] = null;
        cpuList = sigar.getCpuPercList();
        for (int i = 0; i < infos.length; i++) {// 不管是单块CPU还是多CPU都适用
            CpuInfo info = infos[i];
            System.out.println("第" + (i + 1) + "块CPU信息");
            System.out.println("CPU的总量MHz:  " + info.getMhz());// CPU的总量MHz
            System.out.println("CPU生产商: " + info.getVendor());// 获得CPU的卖主,如:Intel
            System.out.println("CPU类别:  " + info.getModel());// 获得CPU的类别,如:Celeron
            System.out.println("CPU缓存数量:    " + info.getCacheSize());// 缓冲存储器数量
            getCpuPerc(cpuList[i]);
        }
    }
}
网友评论