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服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...
随机推荐
- IOS 创建目录/文件夹
•IOS 应用目录简介 个文件夹:Documents, Library和 tmp.Library包含Caches.Preferences目录. Documents:应用中用户数据可以放在这里,iTun ...
- Codeforces 388C Fox and Card Game (贪心博弈)
Codeforces Round #228 (Div. 1) 题目链接:C. Fox and Card Game Fox Ciel is playing a card game with her fr ...
- Loadrunner test web service which need username and password
Action(){ char * position; char * str; int offset; char * search_str = "ERROR"; // web_s ...
- Linux(二)—— Linux配置及指令
目录 Linux配置及指令 一.linux中常用软件的安装 二.主机名和网络 1.修改主机名 2.设置网络 三.关闭防火墙 1.检查防火墙是否开启 2.清除策略 3.永久关闭第一个防火墙 4.关闭第二 ...
- XStream教程
XStream是一个简单的基于Java库,Java对象序列化到XML,反之亦然(即:可以轻易的将Java对象和xml文档相互转换). 特点 使用方便 - XStream的API提供了一个高层次外观,以 ...
- java 重新学习 (五)
Set 集合 一.HashSet按照Hash算法存储集合元素(hashCode方法获取hashCode值,根据hashCode值获取元素位置,通过equals判断对象是否相等并且hashCode值是否 ...
- 通用唯一标识码UUID的介绍及使用。
什么是UUID? UUID全称:Universally Unique Identifier,即通用唯一识别码. UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32 = ...
- Hibernate入门教程(一):入门示例(Myeclipse)
●项目结构 ●本项目所用Hibernate版本为5.4.5.Final,导入jar只需lib目录下的required和MySQL所需的jar驱动 1.导入相关jar包(配置构建路径) 说明:本人已将所 ...
- sql 查询库是否存在
网上查了很多,但是都是不完整的,很多坑,后面终于摸索出来了:DROP DATABASE IF EXISTS 库名(不要加引号); 这句话的意思就是如果库存在,就删除库,然后再新建库就行了.
- CTU OPEN 2017 Punching Power /// 最大独立集
题目大意: 给定n 给定n个机器的位置 要求任意两个机器间的距离至少为1.3米 求最多能选择多少个机器 至少为1.3米 说明若是位于上下左右一步的得放就不行 将机器编号 将不能同时存在的机器连边 此时 ...