java程序实现获取计算机cpu利用率和内存使用信息的代码_第1页
java程序实现获取计算机cpu利用率和内存使用信息的代码_第2页
java程序实现获取计算机cpu利用率和内存使用信息的代码_第3页
java程序实现获取计算机cpu利用率和内存使用信息的代码_第4页
java程序实现获取计算机cpu利用率和内存使用信息的代码_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、利用java程序实现获取计算机cpu利用率和内存使用信息。创建一个Bean用来存贮要得到的信public class MonitorInfoBean /* 可使用内存. */private long totalMemory;/* 剩余内存. */private long freeMemory;/* 最大可使用内存. */private long maxMemory;/* 操作系统. */private String osName;/* 总的物理内存. */private long totalMemorySize;/* 剩余的物理内存. */private long freePhysicalMe

2、morySize;/* 已使用的物理内存. */private long usedMemory;/* 线程总数. */private int totalThread;/* cpu使用率. */private double cpuRatio;public long getFreeMemory( return freeMemory;public void setFreeMemory(long freeMemory this.freeMemory = freeMemory;public long getFreePhysicalMemorySize( return freePhysicalMemory

3、Size;public void setFreePhysicalMemorySize(long freePhysicalMemorySize this.freePhysicalMemorySize = freePhysicalMemorySize;public long getMaxMemory( return maxMemory;public void setMaxMemory(long maxMemory this.maxMemory = maxMemory;public String getOsName( return osName;public void setOsName(Strin

4、g osName this.osName = osName;public long getTotalMemory( return totalMemory;public void setTotalMemory(long totalMemory this.totalMemory = totalMemory;public long getTotalMemorySize( return totalMemorySize;public void setTotalMemorySize(long totalMemorySize this.totalMemorySize = totalMemorySize;pu

5、blic int getTotalThread( return totalThread;public void setTotalThread(int totalThread this.totalThread = totalThread;public long getUsedMemory( return usedMemory;public void setUsedMemory(long usedMemory this.usedMemory = usedMemory;public double getCpuRatio( return cpuRatio;public void setCpuRatio

6、(double cpuRatio this.cpuRatio = cpuRatio;之后,建立bean的接口public interface IMonitorService public MonitorInfoBean getMonitorInfoBean( throws Exception;然后,就是最关键的,得到cpu的利用率,已用内存,可用内存,最大内存等信息。import java.io.InputStreamReader;import java.io.LineNumberReader;import sun.management.ManagementFactory;import com

7、.sun.management.OperatingSystemMXBean;import java.io.*;import java.util.StringTokenizer;/* 获取系统信息的业务逻辑实现类.* author GuoHuang*/public class MonitorServiceImpl implements IMonitorService private static final int CPUTIME = 30;private static final int PERCENT = 100;private static final int FAULTLENGTH =

8、10;private static final File versionFile = new File("/proc/version"private static String linuxVersion = null;/* 获得当前的监控对象.* return 返回构造好的监控对象* throws Exception* author GuoHuang*/public MonitorInfoBean getMonitorInfoBean( throws Exception int kb = 1024;/ 可使用内存long totalMemory = Runtime.getR

9、untime(.totalMemory( / kb;/ 剩余内存long freeMemory = Runtime.getRuntime(.freeMemory( / kb;/ 最大可使用内存long maxMemory = Runtime.getRuntime(.maxMemory( / kb;OperatingSystemMXBean osmxb = (OperatingSystemMXBean ManagementFactory.getOperatingSystemMXBean(;/ 操作系统String osName = System.getProperty("

10、"/ 总的物理内存long totalMemorySize = osmxb.getTotalPhysicalMemorySize( / kb;/ 剩余的物理内存long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize( / kb; / 已使用的物理内存long usedMemory = (osmxb.getTotalPhysicalMemorySize( - osmxb.getFreePhysicalMemorySize(/ kb;/ 获得线程总数ThreadGroup parentThread;for (parent

11、Thread = Thread.currentThread(.getThreadGroup(; parentThread .getParent( != null; parentThread = parentThread.getParent(;int totalThread = parentThread.activeCount(;double cpuRatio = 0;if (osName.toLowerCase(.startsWith("windows" cpuRatio = this.getCpuRatioForWindows(;else cpuRatio = this.

12、getCpuRateForLinux(;/ 构造返回对象MonitorInfoBean infoBean = new MonitorInfoBean(;infoBean.setFreeMemory(freeMemory;infoBean.setFreePhysicalMemorySize(freePhysicalMemorySize;infoBean.setMaxMemory(maxMemory;infoBean.setOsName(osName;infoBean.setTotalMemory(totalMemory;infoBean.setTotalMemorySize(totalMemor

13、ySize;infoBean.setTotalThread(totalThread;infoBean.setUsedMemory(usedMemory;infoBean.setCpuRatio(cpuRatio;return infoBean;private static double getCpuRateForLinux(InputStream is = null;InputStreamReader isr = null;BufferedReader brStat = null;StringTokenizer tokenStat = null;trySystem.out.println(&q

14、uot;Get usage rate of CUP , linux version: "+linuxVersion;Process process = Runtime.getRuntime(.exec("top -b -n 1"is = process.getInputStream(;isr = new InputStreamReader(is;brStat = new BufferedReader(isr;if(linuxVersion.equals("2.4"brStat.readLine(;brStat.readLine(;brStat.

15、readLine(;brStat.readLine(;tokenStat = new StringTokenizer(brStat.readLine(;tokenStat.nextToken(;tokenStat.nextToken(;String user = tokenStat.nextToken(;tokenStat.nextToken(;String system = tokenStat.nextToken(;tokenStat.nextToken(;String nice = tokenStat.nextToken(;System.out.println(user+" ,

16、"+system+" , "+nice;user = user.substring(0,user.indexOf("%"system = system.substring(0,system.indexOf("%"nice = nice.substring(0,nice.indexOf("%"float userUsage = new Float(user.floatValue(;float systemUsage = new Float(system.floatValue(;float niceUsage

17、 = new Float(nice.floatValue(;return (userUsage+systemUsage+niceUsage/100;elsebrStat.readLine(;brStat.readLine(;tokenStat = new StringTokenizer(brStat.readLine(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nex

18、tToken(;String cpuUsage = tokenStat.nextToken(;System.out.println("CPU idle : "+cpuUsage;Float usage = new Float(cpuUsage.substring(0,cpuUsage.indexOf("%"return (1-usage.floatValue(/100; catch(IOException ioeSystem.out.println(ioe.getMessage(;freeResource(is, isr, brStat;return 1

19、; finallyfreeResource(is, isr, brStat;private static void freeResource(InputStream is, InputStreamReader isr, BufferedReader brtryif(is!=nullis.close(;if(isr!=nullisr.close(;if(br!=nullbr.close(;catch(IOException ioeSystem.out.println(ioe.getMessage(;/* 获得CPU使用率.* return 返回cpu使用率* author GuoHuang*/p

20、rivate double getCpuRatioForWindows( try String procCmd = System.getenv("windir"+ "system32wbemwmic.exeprocess get Caption,CommandLine,"+"KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationC ount"/ 取进程信息long c0 = readCpu(Runtime.getRuntime(.exec(pr

21、ocCmd;Thread.sleep(CPUTIME;long c1 = readCpu(Runtime.getRuntime(.exec(procCmd;if (c0 != null && c1 != null long idletime = c10 - c00;long busytime = c11 - c01;return Double.valueOf(PERCENT * (busytime / (busytime + idletime.doubleValue(; else return 0.0; catch (Exception ex ex.printStackTrac

22、e(;return 0.0;/* 读取CPU信息.* param proc* return* author GuoHuang*/private long readCpu(final Process proc long retn = new long2;try proc.getOutputStream(.close(;InputStreamReader ir = new InputStreamReader(proc.getInputStream(; LineNumberReader input = new LineNumberReader(ir;String line = input.readL

23、ine(;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("Ker

24、nelModeTime"int wocidx = line.indexOf("WriteOperationCount"long idletime = 0;long kneltime = 0;long usertime = 0;while (line = input.readLine( != null if (line.length( < wocidx continue;/ 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount,/ ThreadCount,UserModeTime,WriteO

25、perationString caption = Bytes.substring(line, capidx, cmdidx - 1.trim(;String cmd = Bytes.substring(line, cmdidx, kmtidx - 1.trim(;if (cmd.indexOf("wmic.exe" >= 0 continue;/ ("line="+line;if (caption.equals("System Idle Process"| caption.equals("System&

26、quot; 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.subst

27、ring(line, umtidx, wocidx - 1.trim(.longValue(;retn0 = idletime;retn1 = kneltime + usertime;return retn; catch (Exception ex ex.printStackTrace(; finally try proc.getInputStream(.close(; catch (Exception e e.printStackTrace(;return null;/* 测试方法.* param args* throws Exception* author GuoHuang*/public static void main(String args throws Exception IMonitorService service = new MonitorServiceImpl(;MonitorInfoBean monitorInfo = serv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论