package com.cmmb.util; import java.io.*; /** * linux 下cpu 内存 磁盘 jvm的使用监控 * @author avery_leo * */ public class DiskSpace { /** * 获取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 /home");//df -hl 查看硬盘空间 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; 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(); } //上面写在userd和total写反了,懒得改了,就反着用了 System.out.println("----totalHD----" + usedHD); System.out.println("----usedHD----" + totalHD); return (totalHD / usedHD) * 100; } public static void main(String[] args) throws Exception { DiskSpace cpu = new DiskSpace(); 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()); } }
来源:http://dongisland.iteye.com/blog/1118788
相关推荐
Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU、内存、硬盘、进程等。下面将介绍两种获取系统信息的方法。 方法一:使用 Java ...
Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU 信息、内存信息、硬盘信息、进程信息等。在实际开发中,这些信息往往是非常有用的...
"java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码" 在Windows操作系统中,内存管理是一个非常重要的方面。Windows实现按需调页的虚拟内存机制,使得应用程序可以使用超过...
Java 获取系统信息是指通过 Java 语言来获取系统的各种信息,包括 CPU 信息、内存信息、硬盘信息、进程信息等。在 Java 中,我们可以使用多种方式来获取系统信息,如使用 Runtime 类、System 类、ManagementFactory ...
这个第三方jar包`sigar.jar`提供了丰富的API,允许开发者便捷地获取各种操作系统级别的信息,包括CPU、内存、硬盘、网络等资源的状态。在Java应用程序中,通过导入`sigar.jar`,我们可以轻松实现对运行环境的系统...
获取系统级信息,如CPU和内存使用率,通常需要`android.permission.SYSTEM_ALERT_WINDOW`(显示系统级窗口)或`android.permission.ACCESS_FINE_LOCATION`(访问位置信息)等权限,而这些权限属于危险权限,需要用户...
本项目就是基于Java利用第三方jar包Sigar(System Information Gatherer and Reporter)来实现服务器系统的实时参数监控,涵盖了CPU、内存、硬盘以及网络流量四大关键指标。 首先,让我们深入理解Sigar库。Sigar是...
2. **进程信息**:展示正在运行的进程列表,包括进程ID、名称、状态、CPU和内存使用情况等,这对于系统性能分析和故障排查很有帮助。 3. **内存状态**:提供总内存、已用内存、空闲内存等数据,以及内存分配和使用率...
本文主要围绕Android设备的CPU、硬盘、内存以及网络设置等信息的获取进行探讨。 首先,查看手机信息的可行性分析涉及到对系统接口的理解和使用。在Android系统中,大部分硬件和系统信息可以通过Java API或者系统...
在Java编程环境中,有时我们需要获取系统的资源使用情况,如CPU和内存的利用率。为了实现这一目标,我们可以利用JNI(Java Native Interface),它提供了一种方式让Java代码能够调用C/C++编写的本地方法,从而获取...
首先,/proc文件系统是Linux内核提供的一个接口,它以文件的形式存在于内存中,通过这个接口,系统管理员可以访问到内核内部的数据结构,并获取系统及进程的实时信息,包括CPU、硬盘、内存等硬件的状态。/proc文件...
通过阅读和理解这个文件,我们可以学习如何直接从操作系统获取内存使用情况。 综上所述,掌握获取和分析CPU使用率及内存使用情况的技能对IT专业人员至关重要,无论是为了优化代码、监控系统健康还是解决问题。通过...
这个实验旨在通过Java语言来模拟实际操作系统中的系统进程调度过程,同时在实验二中加入了内存分配的模拟,以帮助学习者更深入地理解这些概念。 首先,我们来看"进程调度"。在操作系统中,进程调度是决定哪个进程在...
在Linux系统中,`ps`命令可以列出当前系统中的所有进程,而`top`或`htop`提供实时的进程监控,包括CPU使用率、内存占用等信息。 内存管理是操作系统的核心功能之一,主要分为物理内存和虚拟内存。物理内存是指...
Sigar 是一个跨平台的系统监控库,由Hypertable项目开发,提供了一种统一的方式来获取各种操作系统的信息,包括CPU、内存、硬盘使用率等。在Windows系统下,使用Sigar时,我们需要确保对应的动态链接库文件(如`lib...
对于开发者,`DotnetSysmon`是一个针对.NET环境的系统监视工具,它可以提供详细的CPU使用信息,包括进程、线程等的CPU利用率。 内存,或称RAM(随机存取存储器),是计算机运行过程中临时存储数据的地方。内存不足...