ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:16.97KB ,
资源ID:25282552      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25282552.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java程序实现获取计算机cpu利用率和内存使用信息的代码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java程序实现获取计算机cpu利用率和内存使用信息的代码.docx

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

2、*/private long freePhysicalMemorySize;/* 已使用的物理内存. */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 getFreePhysicalMemorySi

3、ze( return freePhysicalMemorySize;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 osNam

4、e;public void setOsName(String 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.totalMe

5、morySize = totalMemorySize;public 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 cpu

6、Ratio;public void setCpuRatio(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

7、.ManagementFactory;import com.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 st

8、atic final int FAULTLENGTH = 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 totalMem

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

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

11、(parentThread = 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.getCp

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

13、;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(Get usa

14、ge 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.4brStat.readLine(;brStat.readLine(;brStat.readLine(;brStat.readLine(;tokenStat = n

15、ew 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+ , +system+ , +nice;user = user.substring(0,user.

16、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 = new Float(nice.floatValue(;return (userUsage+systemUsage+niceUsage/100;elsebrStat.readLine(;br

17、Stat.readLine(;tokenStat = new StringTokenizer(brStat.readLine(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;tokenStat.nextToken(;String cpuUsage = tokenStat.nextToken(;System.out.println(CPU idle : +cpuUsage;Float usag

18、e = 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; finallyfreeResource(is, isr, brStat;private static void freeResource(InputStream is, InputStreamReader isr, BufferedRe

19、ader brtryif(is!=nullis.close(;if(isr!=nullisr.close(;if(br!=nullbr.close(;catch(IOException ioeSystem.out.println(ioe.getMessage(;/* 获得CPU使用率.* return 返回cpu使用率* author GuoHuang*/private double getCpuRatioForWindows( try String procCmd = System.getenv(windir+ system32wbemwmic.exeprocess get Caption,

20、CommandLine,+KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationC ount;/ 取进程信息long c0 = readCpu(Runtime.getRuntime(.exec(procCmd;Thread.sleep(CPUTIME;long c1 = readCpu(Runtime.getRuntime(.exec(procCmd;if (c0 != null & c1 != null long idletime = c10 - c00;long busytime = c11 - c

21、01;return Double.valueOf(PERCENT * (busytime / (busytime + idletime.doubleValue(; else return 0.0; catch (Exception ex ex.printStackTrace(;return 0.0;/* 读取CPU信息.* param proc* return* author GuoHuang*/private long readCpu(final Process proc long retn = new long2;try proc.getOutputStream(.close(;Input

22、StreamReader 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(ReadOp

23、erationCount;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( = 0 continue;/ log.info(line=+line;if (caption.equal

24、s(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(.longValu

25、e(;usertime += Long.valueOf(Bytes.substring(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* th

26、rows Exception* author GuoHuang*/public static void main(String args throws Exception IMonitorService service = new MonitorServiceImpl(;MonitorInfoBean monitorInfo = service.getMonitorInfoBean(;System.out.println(cpu占有率= + monitorInfo.getCpuRatio(;System.out.println(可使用内存= + monitorInfo.getTotalMemo

27、ry(;System.out.println(剩余内存= + monitorInfo.getFreeMemory(;System.out.println(最大可使用内存= + monitorInfo.getMaxMemory(;System.out.println(操作系统= + monitorInfo.getOsName(;System.out.println(总的物理内存= + monitorInfo.getTotalMemorySize( + kb;System.out.println(剩余的物理内存= + monitorInfo.getFreeMemory( + kb; System.

28、out.println(已使用的物理内存= + monitorInfo.getUsedMemory( + kb;System.out.println(线程总数= + monitorInfo.getTotalThread( + kb;其中,Bytes类用来处理字符串public class Bytes public static String substring(String src, int start_idx, int end_idx byte b = src.getBytes(;String tgt = ;for(int i=start_idx; i=end_idx; i+tgt +=(charbi;return tgt;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1