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服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...
随机推荐
- Django中get()和fiter()的区别
QuerySet(查询结果集对象):从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet,也就是指服务器上的url里面的查询内容.Django会对查询返回的结果集QuerySet进行 ...
- Push to GitHub:could not resolve host: github.com
系统:Mac os x 10.11.3 操作:Push to GitHub 错误如下: git push origin ssh: Could not resolve hostname ssh.gith ...
- 转 Jmeter参数化--Post请求的Post body 参数化
2018年01月22日 15:40:58 java2013liu 阅读数:2361收起 个人分类: Jemter 一.使用body data设置参数: 1,首先,使用Fiddler录制post请求 ...
- shell编程:字符串练习题string.sh
string.sh脚本 #!/bin/bash # string="Bigdata process framework is Hadoop,Hadoop is an open source ...
- Django有办法打开HTTP长轮询连接吗?
保持连接打开,直到发生事件. 解决方案 看看Django / Comet(推送):所有邪恶中最少的?或者彗星在Python中的最新推荐? - COMET是“ajax long-polling”的另一个 ...
- 15-vim-缩排和重复执行
缩排和重复执行 命令 功能 >> 向右增加缩进 << 向左减少缩进 . 重复上次命令 缩排命令在开发程序时,统一增加代码的缩进比较有用! 一次性在选中代码前增加4个空格,就叫做 ...
- zabbix-Graphs
图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...
- ASE19 团队项目 alpha 阶段 Frontend 组 scrum7 记录
本次会议于11月11日,11:30 在微软北京西二号楼13158,持续15分钟. 与会人员:Jingyi Xie, , Ziwei Wu, Jiaqi Xu, Jingwei Yi, Hanyue T ...
- 【教程】CentOS 7安装 最新版本Docker
博主最近需要安装Docker,步骤如下: Docker安装官方地址:https://docs.docker.com/install/linux/docker-ce/centos/ 以下命令都是在roo ...
- shell只读变量