java获取windowscpu使用率方法

时间:2024-10-13 16:38:35

1、第一步:判断系统,linux,windons,mac等等系统使用命令和方法都不一样。代码如下:// 操作系统String osName = System.getProperty("os.name");

java获取windowscpu使用率方法

2、第二步:获取系统内存信息,代码如下:// 可使用内存long totalMemory = Runtime.getRuntime().totalMemory() / kb;// 剩余内存long freeMemory = Runtime.getRuntime().freeMemory() / kb;// 最大可使用内存long maxMemory = Runtime.getRuntime().maxMemory() / kb;

java获取windowscpu使用率方法

3、第三步:获取cpu信息,命令和代码如下:String procCmd = System.getenv("windir") + "//system32//wbem//wmic.exe process get Caption,CommandLine," + "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";// 取进程信息long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));

java获取windowscpu使用率方法

4、第四步:readCpu方法代码如下:private long[] readCpu(fina盟敢势袂l Process proc) 撑俯擂摔{ long[] retn = new long[2]; try { proc.getOutputStream().close(); InputStreamReader ir = new InputStreamReader(proc.getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line = input.readLine(); if (line == null || line.length() < FAULTLENGTH) { return null; } int capidx = line.indexOf("Caption"); int cmdidx = line.indexOf("CommandLine"); int rocidx = line.indexOf("ReadOperationCount"); int umtidx = line.indexOf("UserModeTime"); int kmtidx = line.indexOf("KernelModeTime"); int wocidx = line.indexOf("WriteOperationCount"); long idletime = 0; long kneltime = 0; long usertime = 0; while ((line = input.readLine()) != null) { if (line.length() < wocidx) {continue;} String caption = Bytes.substring(line, capidx, cmdidx - 1).trim(); String cmd = Bytes.substring(line, cmdidx, kmtidx - 1).trim(); if (cmd.indexOf("wmic.exe") >= 0) { continue;} if (caption.equals("System Idle Process") || caption.equals("System")) { idletime += Long.valueOf( Bytes.substring(line, kmtidx, rocidx - 1).trim()).longValue(); idletime += Long.valueOf(Bytes.substring(line, umtidx, wocidx - 1).trim()).longValue(); continue; } kneltime += Long.valueOf(Bytes.substring(line, kmtidx, rocidx - 1).trim()).longValue(); usertime += Long.valueOf(Bytes.substring(line, umtidx, wocidx - 1).trim()).longValue(); } retn[0] = idletime; retn[1] = kneltime + usertime; return retn; } catch (Exception ex) { ex.printStackTrace(); } finally { try { proc.getInputStream().close(); } catch (Exception e) { e.printStackTrace(); } } return null;}

java获取windowscpu使用率方法

5、第五步:构造对象,对返回的结果进行封装,代码如下:// 构造返回对象MonitorInfoBean infoBean = new MonitorInfoBean();infoBean.setFreeMemory(freeMemory);infoBean.setFreePhysicalMemorySize(freePhysicalMemorySize);infoBean.setMaxMemory(maxMemory);infoBean.setOsName(osName);infoBean.setTotalMemory(totalMemory);infoBean.setTotalMemorySize(totalMemorySize);infoBean.setTotalThread(totalThread);infoBean.setUsedMemory(usedMemory);infoBean.setCpuRatio(cpuRatio);

java获取windowscpu使用率方法

6、第六步:MonitorInfoBean 实体类代码如下:@Datapublic class MonitorInfoBean { /** *//** 可使用内存. */ private long totalMemory; /** *//** 剩余内存. */ private long freeMemory; /** *//** 最大可使用内存. */ private long maxMemory; /** *//** 操作系统. */ private String osName; /** *//** 总的物理内存. */ private long totalMemorySize; /** *//** 剩余的物理内存. */ private long freePhysicalMemorySize; /** *//** 已使用的物理内存. */ private long usedMemory; /** *//** 线程总数. */ private int totalThread; /** *//** cpu使用率. */ private double cpuRatio;}

java获取windowscpu使用率方法

7、第七步:运行结果展示,如图:

java获取windowscpu使用率方法

8、第八步:此放不了网盘地址,要的留言

© 手抄报圈