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服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...
随机推荐
- TDengine陶建辉 自带聚光灯&BGM的半百少年
TDengine,这款定位为“专为物联网而生的大数据平台”,引爆了2019年夏天的软件圈. 2019年7月12日,涛思数据宣布将TDengine的内核(存储和计算引擎)以及社区版100%开源. 201 ...
- java中常用的转义字符(转)
Java编程中往往需要一些特殊操作,例如空格,换行.或者一些你使用特殊符号的意愿与程序中特殊符号意思冲突的时候,我们不能直接写就需要把这些符号转义,表达你的本意,并与程序中特殊符号做区分,这些都需要转 ...
- VS2014:"64位调试操作花费的时间比预期要长",无法运行调试解决办法
解决步骤: 右键管理员运行命令提示符,输入IISRESERT,重启IIS即可
- memset函数及原补反码关系
memset函数及原补反码关系 计算机存储的是补码 几组常用的memset函数初始化值 10000000 128 10000000 10000000 10000000 10000000 -213906 ...
- 国际C 语言乱码大赛(IOCCC )
你也许听说过“国际C 语言乱码大赛(IOCCC )”,能获奖的人毫无疑问是世界顶级C 程序员.这是他们利用C 语言的特点极限挖掘的结果.下面这个例子就是网上广为流传的 一个经典作品:// 原始代码如下 ...
- 屏蔽浏览器默认样式 user agent stylesheet
user agent stylesheet <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- Rust <7>:数据结构==>链表
enum List { Cons(u64, Box<List>), NULL, } impl List { fn new() -> List { List::NULL } fn pr ...
- ajax请求 Provisional headers are show
请求被阻塞就会导致Provisional headers are show 我的原因是因为数据库 修改操作未提交导致表 锁住 . 后台操作该表超时
- 【Linux】- 同步网络时间
转自:Linux同步网络时间 Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用 ...
- css中的居中问题
前两天写了一篇关于display:table的用法,里面涉及到居中的问题,这两天愈发觉得css中的居中是一个值得关注的问题,现总结如下. 一.垂直居中 (1)inline或者inline-*元素 1. ...