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和android适配
一些情况下对非可点击元素如(label,span)监听click事件,ios下不会触发 解决方案:css增加cursor:pointer; 三星手机遮罩层下的input.select.a等元素可以被点 ...
- python 找到列表中满足某些条件的元素
a = [0, 1, 2, 3, 4, 0, 2, 3, 6, 7, 5] selected = [x for x in a if x in range(1, 5)] # 找到a中属于[1,5)中 ...
- 63、saleforce 的 Merchandise 的简单的增删改查
自定义的controller public with sharing class MerchandiseController { public List<Merchandise__c> m ...
- 2019牛客多校第五场B-generator 1(矩阵快速幂)
generator 1 题目传送门 解题思路 矩阵快速幂.只是平时的矩阵快速幂是二进制的,这题要用十进制的快速幂. 代码如下 #include <bits/stdc++.h> #defin ...
- Java DOM解析器 - 修改XML文档
这是我们需要修改的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8&q ...
- 如何在webpack开发中利用vue框架使用ES6中提供的新语法
在webpack中开发,会遇到一大推问题,特别是babel6升级到babel7,要跟新一大推插件,而对于安装babel的功能就是在webpack开发中,vue中能够是用ES6的新特性: 例如ES6中的 ...
- fedora 26
图标文件路径: /home/xiezhiyan/.local/share/applications
- 新浪sina邮箱客户端配置
接收协议:IMAP 接收邮箱服务器地址:imap.sina.com 端口:993 加密方法:TLS 发送协议:SMTP 发送服务器:smtp.sina.com 端口:465 加密方法:TLS
- shell编程:定义函数
第一种方式 function hello { echo "hello" } 第二种方式 hello() { echo "hello" } 调用函数 命令行:he ...
- NOI 2018 Day1 T1 归程
题面见洛谷 难点: 走过有积水的地方之后就需计算路径长了 关键算法: kruskal重构树 ①原来的 kruskalkruskalkruskal 算法就是用并查集实现的, 但当我们使用 krus ...