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,内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)