请问Java中获得CPU使用率的办法windows系统

请问Java中获得CPU使用率的办法windows系统,第1张

1、确定当前系统安装的jdk是16版本以上

2、windows系统中有获取cpu使用率的可执行文件exe,只要在java中获取该文件的执行路径,通过Java调用即可。

3、获取 *** 作系统可执行文件目录procCmd

4、调用java的RuntimegetRuntime()exec执行cmd应用程序

5、利用java中sleep来计算睡眠前后cpu的忙碌时间与空闲时间,因为sleep不会释放系统资源

6、根据忙碌时间占总时间的比例来计算cpu使用率

示例:

private double getCpuRatioForWindows() {  

        try {  

            String procCmd = Systemgetenv("windir")  

                    + "//system32//wbem//wmicexe process get Caption,CommandLine,"  

                    + "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";  

            // 取进程信息  

            long[] c0 = readCpu(RuntimegetRuntime()exec(procCmd));  

            Threadsleep(CPUTIME);  

            long[] c1 = readCpu(RuntimegetRuntime()exec(procCmd));  

            if (c0 != null && c1 != null) {  

                long idletime = c1[0] - c0[0];  

                long busytime = c1[1] - c0[1];  

                return DoublevalueOf(  

                        PERCENT  (busytime) / (busytime + idletime))  

                        doubleValue();  

            } else {  

                return 00;  

            }  

        } catch (Exception ex) {  

            exprintStackTrace();  

            return 00;  

        }  

    }

使用sigar,

private static void file() throws Exception {

Sigar sigar = new Sigar();

FileSystem fslist[] = sigargetFileSystemList();

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

Systemoutprintln("分区的盘符名称" + i);

FileSystem fs = fslist[i];

// 分区的盘符名称

Systemoutprintln("盘符名称: " + fsgetDevName());

// 分区的盘符名称

Systemoutprintln("盘符路径: " + fsgetDirName());

Systemoutprintln("盘符标志: " + fsgetFlags());//

// 文件系统类型,比如 FAT32、NTFS

Systemoutprintln("盘符类型: " + fsgetSysTypeName());

// 文件系统类型名,比如本地硬盘、光驱、网络文件系统等

Systemoutprintln("盘符类型名: " + fsgetTypeName());

// 文件系统类型

Systemoutprintln("盘符文件系统类型: " + fsgetType());

switch (fsgetType()) {

case 0: // TYPE_UNKNOWN :未知

break;

case 1: // TYPE_NONE

break;

case 2: // TYPE_LOCAL_DISK : 本地硬盘

// 文件系统总大小

FileSystemUsage usage = null;

usage = sigargetFileSystemUsage(fsgetDirName());

Systemoutprintln(fsgetDevName() + "总大小: " + usagegetTotal() + "KB");

// 文件系统剩余大小

Systemoutprintln(fsgetDevName() + "剩余大小: " + usagegetFree() + "KB");

// 文件系统可用大小

Systemoutprintln(fsgetDevName() + "可用大小: " + usagegetAvail() + "KB");

// 文件系统已经使用量

Systemoutprintln(fsgetDevName() + "已经使用量: " + usagegetUsed() + "KB");

double usePercent = usagegetUsePercent() 100D;

// 文件系统资源的利用率

Systemoutprintln(fsgetDevName() + "资源的利用率: " + usePercent + "%");

break;

case 3:// TYPE_NETWORK :网络

break;

case 4:// TYPE_RAM_DISK :闪存

break;

case 5:// TYPE_CDROM :光驱

break;

case 6:// TYPE_SWAP :页面交换

break;

}

}

return;

}

使用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 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());

}

}

}

}

SigarProxy sigar = SigarProxyCachenewInstance(new Sigar(), SLEEP_TIME);

ProcCpu cpu = sigargetProcCpu(pid);

cpugetPercent(); //it return 00 first

Threadsleep(SLEEP_TIME);

ProcCpu cpu = sigargetProcCpu(pid);

return cpugetPercent() //here's the correct value

不曾在阿富汗灭亡这一说法,只能说阿富汗发生了政权更迭,执政党派和***物改变,国家名字变了而已

拜登总统宣布,他将结束美国军队在阿富汗的公开参与。这些行动始于2001年底,当时基地组织袭击了纽约的双子塔。20年来,美国及其北约盟国一直试图带来稳定与和平。这一努力失败了,现在所有这些部队都将回家。

现在主要反对派来自塔利班,这是一个主要由普什图人组成的组织,最初由巴基斯坦情报机构组织,目的是在俄罗斯军队被驱逐后控制阿富汗。最终,塔利班控制了该国75%的领土,并在喀布尔建立了政府。

20年来,塔利班一直在反击阿富汗政府、美国及其北约盟友。随着美国和北约的撤离,塔利班赢得了胜利。

阿富汗现状

阿富汗为什么战火不断?

不毛之地,这个词可以精准地形容阿富汗,山区占国土面积的五分之四,剩下的还有大片的荒漠,这里既没有肥沃的土地,也没有丰富的资源,还是世界上最为贫穷落后的地区,但是却始终是国际上的热点,战争连绵不断。

阿富汗的地图示意图

本•拉登事件

20年前美国发生911恐怖袭击事件后,美国迅速查找真凶,发现藏匿在阿富汗的本•拉登是幕后主使,策划实施了这次震惊全球的恐怖袭击事件,美国要求当时的阿富汗执政当局交出本•拉登,当时的阿富汗是塔利班执政,最高***奥马尔果断拒绝了美国提出的要求。

之后的事情大家也都清楚了,2001年12月9日,塔利班大本营坎大哈被美军攻陷,宣告阿富汗塔利班政权正式终结。

美国驻军阿富汗扶持反塔利班组织组成听命于美国的新政府,成立阿富汗伊斯兰共和国,走世俗化道路,跟着美国狂奔。美军在,这个政府就在,美军一撤走,这政府立马倒台。

20年过去了,塔利班卧薪尝胆,不断壮大自己的作战部队,美军一撤走,迅速攻城略地,冲出大山,占领农村包围城市,入住喀布尔后宣布建立阿富汗伊斯兰酋长国。

阿富汗并没有灭亡,美国扶持建立的是阿富汗伊斯兰共和国,塔利班打回来重掌政权建立的是阿富汗伊斯兰酋长国,人还是那些人,山川依旧,只是国名改变了而已。

阿富汗的改朝换代几乎已成定局,剩下的问题只是各国是否承认这个政权的合法性。

第一副总统萨勒赫

不过被神学士推翻的阿富汗伊斯兰共和国总统虽然流亡海外,但第一副总统萨勒赫(Amrullah Saleh)却在阿国北部的潘杰希尔(字面含义为“五狮”)山谷(Panjshir Valley)坚持抵抗,17日更依据《阿富汗宪法》第60条与67条宣布接任代理总统,强调“阿富汗不是越南”、“我们没有失去意志“,呼吁所有人加入抵抗行列。

阿富汗人面临着持续的战斗、经济下滑和对妇女的压迫。数千万阿富汗人民生活在战乱与恐惧之中,和平,在这片土地的和平依然遥遥无期

以上就是关于请问Java中获得CPU使用率的办法windows系统全部的内容,包括:请问Java中获得CPU使用率的办法windows系统、Java中如何获得某个磁盘(根目录)比如C盘、那位做过snmp4j的开发的,怎么获取cpu,内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存