统计操作系统的整个系统负载占用CPU的情况
最近做一个Java性能统计的问题,需要统计当前进程占用CPU的情况,最开始使用Java MxBean来获取
OperatingSystemMXBean osMxBean = ManagementFactory.getOperatingSystemMXBean();
double cpu = osMxBean.getSystemLoadAverage();
但是这个方法得到的操作系统统计的整个系统负载,不能较好的反应本进程的CPU占用情况,然后就是用一个新的方法,通过统计线程CPU占用时间来做统计,具体代码如下:
package com.service.article;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.ThreadMXBean;
public class CPUMonitorCalc {
private static CPUMonitorCalc instance = new CPUMonitorCalc();
private OperatingSystemMXBean osMxBean;
private ThreadMXBean threadBean;
private long preTime = System.nanoTime();
private long preUsedTime = 0;
private CPUMonitorCalc() {
osMxBean = ManagementFactory.getOperatingSystemMXBean();
threadBean = ManagementFactory.getThreadMXBean();
}
public static CPUMonitorCalc getInstance() {
return instance;
}
public double getProcessCpu() {
long totalTime = 0;
for (long id : threadBean.getAllThreadIds()) {
totalTime += threadBean.getThreadCpuTime(id);
}
long curtime = System.nanoTime();
long usedTime = totalTime - preUsedTime;
long totalPassedTime = curtime - preTime;
preTime = curtime;
preUsedTime = totalTime;
return (((double) usedTime) / totalPassedTime / osMxBean.getAvailableProcessors()) * 100;
}
}
测试方法:
package com.service.article;
public class ArticleApplication {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 2; i++) {
new Thread(() -> {
while (true) {
long bac = 1000000;
bac = bac >> 1;
}
}).start();;
}
while (true) {
Thread.sleep(5000);
System.out.println(CPUMonitorCalc.getInstance().getProcessCpu());
}
}
}
测试结果跟操作系统统计出来的结果几乎一样
统计操作系统的整个系统负载占用CPU的情况相关推荐
- linux下查看java 占用cpu使用情况
使用top命令,查看cpu占用过高的java PID (如PID=9876) 使用ps aux|grep PID (ps aux|grep 9876)查看是那个java程序占用cpu . ps - ...
- JVM占用CPU过高或者线程卡死定位
新项目上线初期经常会遇到CPU过高或者线程卡死问题,这虽然是两类性能瓶颈问题,但是定位方法一致,项目中也遇到过几次,分享下定位经验 1.登录项目所在服务器,直接执行top命令,可以看到cpu使用情况, ...
- 利用shell脚本来监控linux系统的负载与CPU占用情况
这几天在学习研究shell脚本,写的一些系统负载与CPU监控脚本程序.在没有nagios监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况. 一.安 ...
- 衡量cpu使用情况 - 占用率和负载
说明 在对程序进行性能优化过程中,我体会到:正确的衡量cpu的使用情况(各种指标),是进行代码优化的前提条件:CPU是计算机的大脑,所有代码都是由CPU运行,不管是任何因素导致的性能问题,即使是资源不 ...
- ubuntu查看内存占用和查看cpu使用情况的简单方法(ubuntu内存管理)
单独查看内存使用情况的命令:free -m 查看内存及cpu使用情况的命令:top 也可以安装htop工具,这样更直观, 安装命令如下:sudo apt-get install htop 安装完后,直 ...
- linux查看CPU利用率与负载,Linux CPU负载利用率统计
通常,有如下方式可以得到 cpu 利用率情况: top 命令 e.g. top -m 20 -d 1 -t User 0%, System 6%, IOW 0%, IRQ 0% User 1 + Ni ...
- SQLSERVER排查CPU占用高的情况
今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库 ...
- python统计行号_如何使用Python脚本分析CPU使用情况的?
用以分析Python中CPU使用情况.CPU分析是通过分析CPU执行代码的方式来测量代码的性能,以此找到代码中的不妥之处,然后处理它们. 接下来我们将看看如何跟踪Python脚本使用时CPU使用情况, ...
- shell脚本监控系统负载、CPU和内存使用情况
#一.编写系统负载监控的脚本文件 #!/bin/bash ####################################################################### ...
最新文章
- 网吧无盘服务器从30台----115台的经验(二)
- jsTree设置默认节点全部展开的方法
- 如何用excel筛选相似内容_Excel筛选你用好了么?别再下拉点点点了
- html中评论存储方法,html5基于数据存储的评论留言板demo
- 难道我的事,又要落空么。。。
- Effective C++学习第八天
- 自动化要不要学python-老男孩linux自动化运维|做人工智能为什么要学Python呢?
- MongoDB Shell操作
- 理一理字节对齐的那些事
- BUG类算法研究分析
- MySQL 之 Metadata Locking 研究
- 微信小程序-实现保存图片功能的3种方式
- 【pytest官方文档】解读-fixtures函数和测试函数的参数化
- [翻译]Exploiting CVE-2015-0057 ——Part 1
- CSV保存身份证后再打开后4位0000的解决办法
- 集火全屋智能“后装市场”,真正玩得转的没几个
- 牛客网数字化招聘解决方案,支持10万人同时在线笔试
- winhex快捷键使用
- [培训-无线通信基础-10]:正交频分复用(OFDM、符号间多径干扰)
- 已安装内存:16.0GB(3.93GB可用):拆开机箱拔掉内存条重新安装试试。
热门文章
- 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——1.5 安装SMO
- MariaDB Spider:实现MySQL横纵向扩展的小能手
- LVM和raid结合使用
- 贝塞尔曲线开发的艺术
- C# 6.0的字典(Dictionary)的语法
- 我的Java开发学习之旅------Java经典排序算法之二分插入排序
- WCF 第六章 序列化和编码之DataContractJsonSerializer
- 高手快帮忙,关于replace和正者表达式的问题
- 如何在SharePoint Server中整合其他应用系统?
- 10月25日lol服务器维护,《LOL》lol10月25日停机维护到什么时候 10.25维护结束时间...