- 浏览: 387872 次
- 性别:
- 来自: 北京
最新评论
-
liuzhongzhou2721:
不错啊
Snmp4j编程简介之三:Snmp -
ahong520:
我在Keystore.getInstance("JK ...
java实现 SSL双向认证 -
tanghanlin:
好吧,还是支持下
Snmp4j编程简介之三:Snmp -
sjp524617477:
mark
java实现 SSL双向认证 -
dikesky:
您好,看了您的这篇文章学到很多东西。希望您提供一个QQ号(发到 ...
httpclient笔记(二)
java 监控linux CPU 内存 磁盘 JVM:
import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public class TT { /** * 获取cpu使用情况 * @return * @throws Exception */ public double getCpuUsage() throws Exception { double cpuUsed = 0; Runtime rt = Runtime.getRuntime(); Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令 BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(p.getInputStream())); String str = null; String[] strArray = null; while ((str = in.readLine()) != null) { int m = 0; if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 && strArray = str.split(" "); for (String tmp : strArray) { if (tmp.trim().length() == 0) continue; if (++m == 9) {// 第9列为CPU的使用百分比(RedHat cpuUsed += Double.parseDouble(tmp); } } } } } catch (Exception e) { e.printStackTrace(); } finally { in.close(); } return cpuUsed; } /** * 内存监控 * @return * @throws Exception */ public double getMemUsage() throws Exception { double menUsed = 0; Runtime rt = Runtime.getRuntime(); Process p = rt.exec("top -b -n 1");// 调用系统的“top"命令 BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(p.getInputStream())); String str = null; String[] strArray = null; while ((str = in.readLine()) != null) { int m = 0; if (str.indexOf(" R ") != -1) {// 只分析正在运行的进程,top进程本身除外 && // // System.out.println("------------------3-----------------"); strArray = str.split(" "); for (String tmp : strArray) { if (tmp.trim().length() == 0) continue; if (++m == 10) { // 9)--第10列为mem的使用百分比(RedHat 9) menUsed += Double.parseDouble(tmp); } } } } } catch (Exception e) { e.printStackTrace(); } finally { in.close(); } return menUsed; } /** * 获取磁盘空间大小 * * @return * @throws Exception */ public double getDeskUsage() throws Exception { double totalHD = 0; double usedHD = 0; Runtime rt = Runtime.getRuntime(); Process p = rt.exec("df -hl");//df -hl 查看硬盘空间 BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(p.getInputStream())); String str = null; String[] strArray = null; int flag = 0; while ((str = in.readLine()) != null) { int m = 0; // if (flag > 0) { // flag++; strArray = str.split(" "); for (String tmp : strArray) { if (tmp.trim().length() == 0) continue; ++m; // System.out.println("----tmp----" + tmp); if (tmp.indexOf("G") != -1) { if (m == 2) { // System.out.println("---G----" + tmp); if (!tmp.equals("") && !tmp.equals("0")) totalHD += Double.parseDouble(tmp .substring(0, tmp.length() - 1)) * 1024; } if (m == 3) { // System.out.println("---G----" + tmp); if (!tmp.equals("none") && !tmp.equals("0")) usedHD += Double.parseDouble(tmp.substring( 0, tmp.length() - 1)) * 1024; } } if (tmp.indexOf("M") != -1) { if (m == 2) { // System.out.println("---M---" + tmp); if (!tmp.equals("") && !tmp.equals("0")) totalHD += Double.parseDouble(tmp .substring(0, tmp.length() - 1)); } if (m == 3) { // System.out.println("---M---" + tmp); if (!tmp.equals("none") && !tmp.equals("0")) usedHD += Double.parseDouble(tmp.substring( 0, tmp.length() - 1)); // System.out.println("----3----" + usedHD); } } } // } } } catch (Exception e) { e.printStackTrace(); } finally { in.close(); } return (usedHD / totalHD) * 100; } public static void main(String[] args) throws Exception { TT cpu = new TT(); System.out.println("---------------cpu used:" + cpu.getCpuUsage() + "%"); System.out.println("---------------mem used:" + cpu.getMemUsage() + "%"); System.out.println("---------------HD used:" + cpu.getDeskUsage() + "%"); System.out.println("------------jvm监控----------------------"); Runtime lRuntime = Runtime.getRuntime(); System.out.println("--------------Free Momery:" + lRuntime.freeMemory()+"K"); System.out.println("--------------Max Momery:" + lRuntime.maxMemory()+"K"); System.out.println("--------------Total Momery:" + lRuntime.totalMemory()+"K"); System.out.println("---------------Available Processors :" + lRuntime.availableProcessors()); } }
执行结果:如左图
发表评论
-
OpenNMS® 安裝指南
2011-03-10 16:20 1906THIS DOCUMENT IS FOR OpeNNMS 1. ... -
OSGI学习笔记(三)
2010-09-09 11:08 1205OSGi依赖性管理 OSGi允许您把您的应用程序分成多个模 ... -
OSGI学习笔记(二)
2010-09-09 11:03 1537开发一个简单的Hello World的OSGi Bundle( ... -
OSGI学习笔记(一)
2010-09-09 10:43 1200OSGi是什么 OSGi亦称做Java语言的动态模块系统,它 ... -
Javarebel小试
2010-09-07 16:49 34191 Javarebel简介 JavaRebel是一个JV ... -
240多个jQuery插件下载地址
2009-08-11 17:24 12049概述 jQuery 是继 prototype 之后又一个优秀 ... -
关于SNMP的RFC文档号
2009-05-04 16:10 4635一. SMIv1Full Standards: ... -
JavaCard CPU的设计与FPGA实现
2009-05-04 14:28 22581 JavaCard简介 智能 ... -
Java Card 技术(三)
2009-05-04 14:17 2665Java Card 应用程序的元素 请记住,Java ... -
Java Card 技术(二)
2009-05-04 14:13 2764本系列文章的第 1 部分介绍了 Java Card 技术的 ... -
Extjs学习笔记(一)
2008-12-15 13:39 1634下载extj :http://extjs.com/deploy ... -
ftp4j之FTP
2008-12-01 10:11 3739The ftp4j library implements a ... -
James学习笔记
2008-11-25 15:13 3419Apache James 简称 James, 是 Java ... -
非阻塞的Socket链接(来自老紫竹)
2008-11-25 11:10 1749import java.io.IOException; ... -
java实现 SSL双向认证
2008-11-24 16:36 31290实现技术:JSSE(Java Security Socket ... -
编码传说
2008-11-21 17:38 1347很久很久以前,有一群人,他们决定用8个可以开合的晶体管来 ... -
使用Log4j进行日志操作
2008-10-16 11:36 1181使用Log4j进行日志操作1. 概述1.1. 背景在应用程序中 ... -
snmp4j获取数据agent实例(三)
2008-07-03 11:43 6734agent代理端例子: import java.util. ... -
snmp4j获取数据实例(二)之SnmpTrap示例
2008-07-03 10:27 6654snmp4j的jar包可以在它的官方网站http://www. ... -
snmp4j获取数据实例(一,Linux SNMP OID’s for CPU,Memory a)
2008-07-03 09:10 9107常用SNMP OID Linux SNMP OID’s f ...
相关推荐
通过结合这两部分,你可以构建一个全面的系统监控工具,不仅获取CPU和内存使用率,还能监控硬盘性能。 总之,使用JNI来获取CPU和内存使用率能提供更为精确的数据,但同时也增加了代码的复杂性和跨平台的难度。...
1. Linux系统监控:CPU使用率、内存占用、磁盘I/O、网络流量等。 2. Springboot应用监控:HTTP请求速率、错误率、线程池状态、JVM内存和垃圾回收、数据库连接池等。 3. 自定义监控:根据业务需求,添加特定的服务...
- mpstat:监控CPU使用率。 - sar:系统活动报告工具,可以定时收集系统性能数据。 #### 5. 进程管理 - ps:查看进程状态。 - kill和killall:发送信号给进程。 - nohup:让进程在后台运行不受控制台影响。 了解并...
1. 定义获取进程性能数据的函数,例如,使用`psutil`库来获取CPU利用率、内存占用、磁盘I/O等信息。 2. 实现监控线程,定期调用上述函数并更新监控结果。 3. 设计报警机制,如当CPU利用率超过预设阈值或者内存低于...
此外,它还可以获取系统级别的CPU和内存使用情况,这对于分析是否存在过度消耗资源的进程,以及这些进程是否与JVM崩溃有关至关重要。 Sigar库提供了丰富的接口,涵盖了以下主要功能: 1. **系统信息收集**:获取...
这些命令可以帮助开发者监控进程状态、CPU和内存状态、磁盘状态(IO、使用率)、网络流量状态以及块设备状态等。 - **JVM工具集**:主要用来监控和诊断JVM的状态,例如`jconsole`、`jvisualvm`、`MAT`(Memory ...
以下是一些常用的Linux系统监控命令,它们可以帮助我们追踪CPU使用、内存消耗、网络活动以及存储I/O等关键性能指标。 1. **`ps` 命令**: `ps -mp pid -o THREAD,tid,time` 或 `ps -Lfp pid` 用于找出占用CPU最多...
这些工具不仅能够监控CPU使用率,还能监测内存、磁盘I/O、网络流量等多方面信息,并提供可视化报表,方便管理员远程管理和诊断问题。 代码方面,开发者可以利用编程语言提供的系统调用来获取CPU使用信息。例如,在...
nmon(Nigel's Performance Monitor)是一款强大的性能监控工具,尤其适用于Linux环境,能够提供详细的系统资源使用情况,包括CPU、内存、磁盘I/O以及网络等。本文将深入探讨如何在Java JRE环境下部署nmon进行监控,...
这个“java监控开发示例”旨在提供一种方法来实现这一目标,通过Java代码远程监控系统资源,如CPU使用率、内存占用、磁盘空间以及网络状态等。 首先,我们需要理解Java中用于系统监控的基础概念和技术。Java提供了...
3. **性能监控与诊断工具**:`jconsole`、`jvisualvm` 和 `jmap` 等工具可以帮助我们监控JVM的状态,查看内存占用、线程状态、类加载情况等,为调优提供依据。 4. **JVM编译优化**:JIT(Just-In-Time)编译器将...
Jconsole是一个强大的JVM监控工具,可以实时查看内存使用、线程状态和CPU使用率,帮助识别潜在问题和优化点。 监控调优方案还包括定期收集性能数据,分析趋势,找出性能瓶颈,然后进行针对性的优化。例如,调整...
`aixperf60.sh`和`aixperf.sh`可能是利用这些命令定制的脚本,用于监控CPU、内存、磁盘I/O和网络等资源的使用情况,帮助定位WAS在AIX环境下的性能瓶颈。 3. **Linperf.sh**: Linux环境下的性能分析通常依赖于`top`...
- **操作系统监控工具**:例如`vmstat`、`iostat`等,这些工具可以提供关于CPU使用率、内存使用情况、磁盘I/O等方面的统计数据。 - **JVM监控工具**:如`VisualGC`、`-verbose:gc`等,这些工具专门针对JVM的垃圾回收...
- **vmstat**:用于监控整个系统的资源使用情况,包括CPU、内存、磁盘I/O等,有助于从整体上把握系统状态。 - **iostat**:用于监控磁盘I/O操作,帮助判断是否存在磁盘瓶颈。 通过上述步骤,可以有效地定位并解决...
- **JVM监控**:对于Java应用,可以使用JMX或JConsole获取JVM内存、线程和GC状态。 Python和Shell结合使用可以实现更复杂的监控需求,如自定义警告阈值、数据可视化和长期的日志分析。Python的灵活性和丰富的库使其...
JProfiler是一款广泛使用的Java剖析工具,它提供了丰富的功能,包括内存分析、CPU性能剖析、线程监控、SQL查询分析等。该工具以直观的用户界面和详尽的数据报告,帮助开发者快速定位和解决性能瓶颈,提升应用程序...
6. **电源管理**:在电池供电的设备上,JVM需要优化电源使用,如降低CPU利用率,及时关闭无用服务,以延长电池寿命。 设计嵌入式Linux的Java虚拟机时,还需要考虑以下因素: 1. **可移植性**:JVM应能在多种嵌入式...
你可以监控堆内存使用,找出长期存在的对象,识别可能的内存泄漏源。 2. **CPU剖析**:通过CPU剖析,你可以看到哪些方法消耗了最多的CPU资源,进一步优化代码性能。 3. **线程分析**:实时查看线程状态,定位死锁...