Linux下使用java获取cpu、内存使用率
原文地址:http://www.voidcn.com/article/p-yehrvmep-uo.html
思路如下:Linux系统中可以用top命令查看进程使用CPU和内存情况,通过Runtime类的exec()方法执行命令"top”,获取"top"的输出,从而得到CPU和内存的使用情况。
使用top命令获取系统信息:
top -b -n -1 | sed -n '3p'(使用sed命令将top输出内容中的第三行打印出来)
%Cpu(s): 6.5 us, 2.2 sy, 0.7 ni, 87.0 id, 3.5 wa, 0.0 hi, 0.1 si, 0.0 st
top -b -n 1 | sed -n '3p' | awk '{print $8}'(将第三行第八列打印出来)
87.0
获取单个进程CPU,内存的占用率
cmd脚本命令:top -b -n 1 -p $pid | sed -n '$p'
上面的$pid,就是进程的PID
Java Runtime类
每个 Java 应用程序都有一个 Runtime
类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime
方法获取当前运行时。
应用程序不能创建自己的 Runtime 类实例。
示例程序(针对suse平台,如果是其他Linux,可能需要稍微修改程序)
import java.io.BufferedReader; import java.io.InputStreamReader; public class MySystem { public static float getCpuUsage() { float cpuUsage = 0; float idleUsage = 0; Runtime rt = Runtime.getRuntime(); String[] cmd = { "/bin/sh", "-c", "top -b -n 1 | sed -n '3p' | awk '{print $5}'" };<span style="color:#ff0000;"><strong>//如果使用的命令带有空格、重定向等,必须使用命令串(字符串数组)</strong></span> BufferedReader in = null; String str = ""; try{ Process p = rt.exec(cmd); in = new BufferedReader(new InputStreamReader(p.getInputStream())); str = in.readLine(); }catch(Exception e){ } str = str.substring(0,3); idleUsage = Float.parseFloat(str); cpuUsage = 100 - idleUsage; cpuUsage = FormatFloat.formatFloat(cpuUsage); System.out.println("CpuUsage:"); System.out.println(" "+cpuUsage); return cpuUsage; } public static void getCPUMEMByPID(){ Runtime rt = Runtime.getRuntime(); String[] cmd = { "/bin/sh", "-c", "top -b -n 1 | sed -n '3p' | awk '{print $5}'" }; BufferedReader in = null; String str = ""; try{ Process p = rt.exec(cmd); in = new BufferedReader(new InputStreamReader(p.getInputStream())); str = in.readLine(); }catch(Exception e){ } } public static float getMemUsage() { long memUsed = 0; long memTotal = 0; float memUsage = 0; Runtime rt = Runtime.getRuntime(); String[] cmd = { "/bin/sh", "-c", "top -b -n 1 | sed -n '4p' | awk '{print $2 \"\t\" $4}'" }; BufferedReader in = null; String str = ""; try{ Process p = rt.exec(cmd); in = new BufferedReader(new InputStreamReader(p.getInputStream())); str = in.readLine(); }catch(Exception e){ } String[] mems = str.split("\t"); mems[0] = mems[0].substring(0,mems[0].length()-2); memTotal = Long.parseLong(mems[0]); mems[1] = mems[1].substring(0,mems[1].length()-2); memUsed = Long.parseLong(mems[1]); memUsage = (float) memUsed / memTotal * 100; memUsage = FormatFloat.formatFloat(memUsage); System.out.println("MemUsage:"); System.out.println(" "+memUsage); return memUsage; } }
获取cpu、内存的使用率还有其他方法
proc文件系统(http://www.cnblogs.com/yoleung/articles/1638922.html,http://blog.csdn.net/blue_jjw/article/details/8741000)
参考文章:http://zengjz88.iteye.com/blog/1595535 http://cumtyjp.blog.163.com/blog/static/7611480820093157512732/ http://blog.csdn.net/hemingwang0902/article/details/4054709
相关文章
- 1. linux下获取内存使用率及cpu使用率
- 2. linux下用java程序获取cpu和内存的使用率
- 3. 用java获得cpu,内存使用率
- 4. java获取cpu使用率/内存使用率/硬盘的使用率
- 5. 编程获取linux的CPU使用率内存占用率
- 6. linux下实现CPU使用率和内存使用率获取方法
- 7. 获取系统的CPU使用率、内存使用率
- 8. LINUX下获取CPU和内存使用率
- 9. linux下获取cpu和内存使用率
- 10. VC++获取CPU使用率
- 更多相关文章...
相关标签/搜索
- 获取内存使用率 获取cpu使用率 cpu内存使用率 内存CPU使用率 CPU使用率 内存使用率 Perl CPU使用率 CPU使用率高 cpu使用率100Android cpu 使用率 Linux CPU使用率 使用率 使用 使用 使用 使用 使用 使用 使用 linux使用 Java Linux cpu使用率 cpu timeQt 获取内存使用量 vs2008 cpu使用率很高 flume cpu file channel 使用率 opentsdb查询cpu使用率 QEventLoop cpu使用率上升opencv imdecode CPU使用率 anr cpu使用率过高 ANR sdcard cpu使用率 android计算cpu使用率
Linux下使用java获取cpu、内存使用率的更多相关文章
- 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息
CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTok ...
- 性能测试分析过程(三)linux下查看最消耗CPU/内存的进程
linux下查看最消耗CPU 内存的进程 1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 2.内存消耗最多的前10 ...
- 使用.NET FrameWork获取CPU,内存使用率以及磁盘空间
在以前,我们想获取CPU,内存等信息就不得不借助win32 API来实现.但现在,.NET FrameWork已经把这些API封装到.NET类库中了,所以我们可以借助.NET类库很轻松的获取这些信息. ...
- Linux 下定位java应用 cpu高的原因(转)
使用场景: 遇到Linux下java应用cpu占用很高的时候,我们很想知道此时的应用到底在做什么导致资源的消耗. 方便我们进一步定位和优化~ 1.查询cpu耗用top5的进程(你也可以top10) [ ...
- Linux下用Java获取本机IP
可能有多个网卡包括虚拟网卡,需要进行排除 String ip = ""; try { Enumeration<?> e1 = NetworkInterface.getN ...
- Linux下查看内核、CPU、内存及各组件版本的命令和方法
Linux下查看内核.CPU.内存及各组件版本的命令和方法 Linux查看内核版本: uname -a more /etc/*release ...
- linux Java项目CPU内存占用高故障排查
linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...
- linux下查询进程占用的内存方法总结
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...
- Linux下php-fpm进程过多导致内存耗尽问题
这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下 最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...
随机推荐
- 前端工程师技能图谱skill-map
# 前端工程师技能图谱 ## 浏览器 - IE6/7/8/9/10/11 (Trident) - Firefox (Gecko) - Chrome/Chromium (Blink) - Safari ...
- centos 安装 Lamp(Linux + Apache + PHP) 并安装 phpmyadmin
来源:http://www.laozhe.net/302.html 一般情况下,安装的都是最新的正式版,除非你有特殊需求,要安装指定的版本,本文暂不讨论.从最基础的开始,一点点完成一个可用的 Linu ...
- display和visibility
display: none; visibility: hidden; 相同点:两者都是隐藏元素不同点:display不保留位置,visibility保留位置
- 关闭禁用 Redis 危险命令
Redis 的危险命令主要有: flushdb,清空数据库 flushall,清空所有记录,数据库 config,客户端连接后可配置服务器 keys,客户端连接后可查看所有存在的键,当 redis k ...
- 什么是AngularJs?特点是什么?和JQuery什么区别和联系
什么是AngularJs? AngularJs是js框架,集中操作数据,不关注Dom操作,适用于以数据操作为主的的SPA(单页应用). 它的特点 采用MVC模型 双向数据绑定 依赖注入 模块化 与jQ ...
- token的创建及解析
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifac ...
- Eureka 系列(05)消息广播(上):消息广播原理分析
Eureka 系列(05)消息广播(上):消息广播原理分析 [TOC] 0. Spring Cloud 系列目录 - Eureka 篇 首先回顾一下客户端服务发现的流程,在上一篇 Eureka 系列( ...
- Python科学计算:用NumPy快速处理数据
创建数组 import numpy as np a=np.array([1,2,3]) b=np.array([[1,2,3],[4,5,6],[7,8,9]]) b[1,1]=10 print(a. ...
- Sql Server 表结构相关
1.库表列信息 --取所有库 SELECT Name FROM Master..SysDatabases ORDER BY Name --查询所有表 select name from 库名..syso ...
- ssh文件 ip锁定
vi ~/.ssh/config Host web*hostname 115.29.242.1**user lian Host **hostname 192.168.1.**user dface