如何通过Java的JNA开源项目(库)来读取CPU使用率

如何通过Java的JNA开源项目(库)来读取CPU使用率,第1张

没有现成的dll实现。你可以参考这个程序

>

1、在远程server里搭建一个>

使用sigar来监控,简单方便!

使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigar jar包。以下程序经过测试,完全可用!

 

有关jar包跟dll文件  我上传不了,私信我,我发你

 

 

 

import javanetInetAddress;

import javanetUnknownHostException;

import javautilMap;

import javautilProperties;

import javautilTimer;

import javautilTimerTask;

 

import orghypericsigarCpuInfo;

import orghypericsigarCpuPerc;

import orghypericsigarFileSystem;

import orghypericsigarFileSystemUsage;

import orghypericsigarMem;

import orghypericsigarNetFlags;

import orghypericsigarNetInterfaceConfig;

import orghypericsigarNetInterfaceStat;

import orghypericsigarOperatingSystem;

import orghypericsigarSigar;

import orghypericsigarSigarException;

import orghypericsigarSwap;

import orghypericsigarWho;

 

public class RuntimeTest {

    public static void main(String[] args) {

        try { 

            Timer timer = new Timer();//定时器

            TimerTask task = new TimerTask(){

                public void run() {

                    try {

                        memory();

                    } catch (SigarException e) {

                        eprintStackTrace();

                    }

                }

            };

            try{

            timerschedule(task, 0, 3000);//每3秒取一次

            }catch(Exception ex){

                exprintStackTrace();

            }

            // System信息,从jvm获取

           // property();//根据自己的需求,都可以放到定时器中定时获取

            // cpu信息

            //cpu();

            // 内存信息

           // memory();

            //  *** 作系统信息

          //  os();

            // 用户信息

          //  who();

            

            

            

        } catch (Exception e1) {

            e1printStackTrace();

        }

    }

  

    private static void property() throws UnknownHostException {

        Runtime r = RuntimegetRuntime();

        Properties props = SystemgetProperties();

        InetAddress addr;

        addr = InetAddressgetLocalHost();

        String ip = addrgetHostAddress();

        Map<String, String> map = Systemgetenv();

        String userName = mapget("USERNAME");// 获取用户名

        String computerName = mapget("COMPUTERNAME");// 获取计算机名

        String userDomain = mapget("USERDOMAIN");// 获取计算机域名

        Systemoutprintln("用户名:    " + userName);

        Systemoutprintln("计算机名:   " + computerName);

        Systemoutprintln("计算机域名:  " + userDomain);

        Systemoutprintln("本地ip地址: " + ip);

        Systemoutprintln("本地主机名:  " + addrgetHostName());

        Systemoutprintln("JVM可以使用的总内存:    " + rtotalMemory());

        Systemoutprintln("JVM可以使用的剩余内存:   " + rfreeMemory());

        Systemoutprintln("JVM可以使用的处理器个数:  " + ravailableProcessors());

        Systemoutprintln("Java的运行环境版本:    " + propsgetProperty("javaversion"));

        Systemoutprintln("Java的运行环境供应商:   " + propsgetProperty("javavendor"));

        Systemoutprintln("Java供应商的URL:    " + propsgetProperty("javavendorurl"));

        Systemoutprintln("Java的安装路径:  " + propsgetProperty("javahome"));

        Systemoutprintln("Java的虚拟机规范版本:   " + propsgetProperty("javavmspecificationversion"));

        Systemoutprintln("Java的虚拟机规范供应商:  " + propsgetProperty("javavmspecificationvendor"));

        Systemoutprintln("Java的虚拟机规范名称:   " + propsgetProperty("javavmspecificationname"));

        Systemoutprintln("Java的虚拟机实现版本:   " + propsgetProperty("javavmversion"));

        Systemoutprintln("Java的虚拟机实现供应商:  " + propsgetProperty("javavmvendor"));

        Systemoutprintln("Java的虚拟机实现名称:   " + propsgetProperty("javavmname"));

        Systemoutprintln("Java运行时环境规范版本:  " + propsgetProperty("javaspecificationversion"));

        Systemoutprintln("Java运行时环境规范供应商: " + propsgetProperty("javaspecificationvender"));

        Systemoutprintln("Java运行时环境规范名称:  " + propsgetProperty("javaspecificationname"));

        Systemoutprintln("Java的类格式版本号:    " + propsgetProperty("javaclassversion"));

        Systemoutprintln("Java的类路径:   " + propsgetProperty("javaclasspath"));

        Systemoutprintln("加载库时搜索的路径列表:    " + propsgetProperty("javalibrarypath"));

        Systemoutprintln("默认的临时文件路径:  " + propsgetProperty("javaiotmpdir"));

        Systemoutprintln("一个或多个扩展目录的路径:   " + propsgetProperty("javaextdirs"));

        Systemoutprintln(" *** 作系统的名称:    " + propsgetProperty("osname"));

        Systemoutprintln(" *** 作系统的构架:    " + propsgetProperty("osarch"));

        Systemoutprintln(" *** 作系统的版本:    " + propsgetProperty("osversion"));

        Systemoutprintln("文件分隔符:  " + propsgetProperty("fileseparator"));

        Systemoutprintln("路径分隔符:  " + propsgetProperty("pathseparator"));

        Systemoutprintln("行分隔符:   " + propsgetProperty("lineseparator"));

        Systemoutprintln("用户的账户名称:    " + propsgetProperty("username"));

        Systemoutprintln("用户的主目录: " + propsgetProperty("userhome"));

        Systemoutprintln("用户的当前工作目录:  " + propsgetProperty("userdir"));

    }

  

    private static void memory() throws SigarException {

        Sigar sigar = new Sigar();

        Mem mem = sigargetMem();

        float total = memgetTotal();

        float used = memgetUsed();

        // 内存总量

        Systemoutprintln("内存总量:   " + memgetTotal() / 1024L/1024L + "M av");

        // 当前内存使用量

        Systemoutprintln("当前内存使用量:    " + memgetUsed() / 1024L/1024L + "M used");

        // 当前内存剩余量

        Systemoutprintln("当前内存剩余量:    " + memgetFree() / 1024L/1024L + "M free");

        // 当前内存使用率

        Systemoutprintln("内存使用率:    " +used/total100+"%");

        Swap swap = sigargetSwap();

        // 交换区总量

        Systemoutprintln("交换区总量:  " + swapgetTotal() / 1024L/1024L + "M av");

        // 当前交换区使用量

        Systemoutprintln("当前交换区使用量:   " + swapgetUsed() / 1024L/1024L + "M used");

        // 当前交换区剩余量

        Systemoutprintln("当前交换区剩余量:   " + swapgetFree() / 1024L/1024L + "M free");

    }

  

    private static void cpu() throws SigarException {

        Sigar sigar = new Sigar();

        CpuInfo infos[] = sigargetCpuInfoList();

        CpuPerc cpuList[] = null;

        cpuList = sigargetCpuPercList();

        for (int i = 0; i < infoslength; i++) {// 不管是单块CPU还是多CPU都适用

            CpuInfo info = infos[i];

            Systemoutprintln("第" + (i + 1) + "块CPU信息");

            Systemoutprintln("CPU的总量MHz:  " + infogetMhz());// CPU的总量MHz

            Systemoutprintln("CPU生产商: " + infogetVendor());// 获得CPU的卖主,如:Intel

            Systemoutprintln("CPU类别:  " + infogetModel());// 获得CPU的类别,如:Celeron

            Systemoutprintln("CPU缓存数量:    " + infogetCacheSize());// 缓冲存储器数量

            printCpuPerc(cpuList[i]);

        }

    }

  

    private static void printCpuPerc(CpuPerc cpu) {

        Systemoutprintln("CPU用户使用率:   " + CpuPercformat(cpugetUser()));// 用户使用率

        Systemoutprintln("CPU系统使用率:   " + CpuPercformat(cpugetSys()));// 系统使用率

        Systemoutprintln("CPU当前等待率:   " + CpuPercformat(cpugetWait()));// 当前等待率

        Systemoutprintln("CPU当前错误率:   " + CpuPercformat(cpugetNice()));//

        Systemoutprintln("CPU当前空闲率:   " + CpuPercformat(cpugetIdle()));// 当前空闲率

        Systemoutprintln("CPU总的使用率:   " + CpuPercformat(cpugetCombined()));// 总的使用率

    }

  

    private static void os() {

        OperatingSystem OS = OperatingSystemgetInstance();

        //  *** 作系统内核类型如: 386、486、586等x86

        Systemoutprintln(" *** 作系统:   " + OSgetArch());

        Systemoutprintln(" *** 作系统CpuEndian():    " + OSgetCpuEndian());//

        Systemoutprintln(" *** 作系统DataModel():    " + OSgetDataModel());//

        // 系统描述

        Systemoutprintln(" *** 作系统的描述:    " + OSgetDescription());

        //  *** 作系统类型

        // Systemoutprintln("OSgetName():    " + OSgetName());

        // Systemoutprintln("OSgetPatchLevel():  " + OSgetPatchLevel());//

        //  *** 作系统的卖主

        Systemoutprintln(" *** 作系统的卖主:    " + OSgetVendor());

        // 卖主名称

        Systemoutprintln(" *** 作系统的卖主名:   " + OSgetVendorCodeName());

        //  *** 作系统名称

        Systemoutprintln(" *** 作系统名称: " + OSgetVendorName());

        //  *** 作系统卖主类型

        Systemoutprintln(" *** 作系统卖主类型:   " + OSgetVendorVersion());

        //  *** 作系统的版本号

        Systemoutprintln(" *** 作系统的版本号:   " + OSgetVersion());

    }

  

    private static void who() throws SigarException {

        Sigar sigar = new Sigar();

        Who who[] = sigargetWhoList();

        if (who != null && wholength > 0) {

            for (int i = 0; i < wholength; i++) {

                // Systemoutprintln("当前系统进程表中的用户名" + StringvalueOf(i));

                Who _who = who[i];

                Systemoutprintln("用户控制台:  " + _whogetDevice());

                Systemoutprintln("用户host: " + _whogetHost());

                // Systemoutprintln("getTime():   " + _whogetTime());

                // 当前系统进程表中的用户名

                Systemoutprintln("当前系统进程表中的用户名:   " + _whogetUser());

            }

        }

    }

  

   

  

    

  

    

}

以上就是关于如何通过Java的JNA开源项目(库)来读取CPU使用率全部的内容,包括:如何通过Java的JNA开源项目(库)来读取CPU使用率、java获取cpu信息失败、java如何获取远程计算机的系统信息,cpu使用情况,磁盘使用情况等等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9328254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存