`

Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法

    博客分类:
  • JAVA
 
阅读更多
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,内存,硬盘,进程等)的相关方法.pdf

    Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU、内存、硬盘、进程等。下面将介绍两种获取系统信息的方法。 方法一:使用 Java ...

    Java获取系统信息(cpu_内存_硬盘_进程等)的相关方法

    Java 获取系统信息(CPU、内存、硬盘、进程等)的相关方法 Java 获取系统信息是指通过 Java 语言获取当前系统的各种信息,包括 CPU 信息、内存信息、硬盘信息、进程信息等。在实际开发中,这些信息往往是非常有用的...

    java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码

    "java管理windows系统内存_java释放内存缓存_java获得CPU使用率_系统内存_硬盘_进程源代码" 在Windows操作系统中,内存管理是一个非常重要的方面。Windows实现按需调页的虚拟内存机制,使得应用程序可以使用超过...

    Java获取系统信息

    Java 获取系统信息是指通过 Java 语言来获取系统的各种信息,包括 CPU 信息、内存信息、硬盘信息、进程信息等。在 Java 中,我们可以使用多种方式来获取系统信息,如使用 Runtime 类、System 类、ManagementFactory ...

    获取系统信息(cpu,内存,硬盘等。。。)的第三方jar包(sigar.jar)

    这个第三方jar包`sigar.jar`提供了丰富的API,允许开发者便捷地获取各种操作系统级别的信息,包括CPU、内存、硬盘、网络等资源的状态。在Java应用程序中,通过导入`sigar.jar`,我们可以轻松实现对运行环境的系统...

    Android获取cpu,内存,磁盘使用率信息

    获取系统级信息,如CPU和内存使用率,通常需要`android.permission.SYSTEM_ALERT_WINDOW`(显示系统级窗口)或`android.permission.ACCESS_FINE_LOCATION`(访问位置信息)等权限,而这些权限属于危险权限,需要用户...

    基于java通过第三方jar包sigar的支持,完成对服务器系统的参数监控,包括CPU、内存、硬盘以及网络流量的实时监控.zip

    本项目就是基于Java利用第三方jar包Sigar(System Information Gatherer and Reporter)来实现服务器系统的实时参数监控,涵盖了CPU、内存、硬盘以及网络流量四大关键指标。 首先,让我们深入理解Sigar库。Sigar是...

    MooInfo是OSHI 的一种可视化实现,用于查看有关系统和硬件的信息 如操作系统,进程,内存,CPU,磁盘,设备,传感器等

    2. **进程信息**:展示正在运行的进程列表,包括进程ID、名称、状态、CPU和内存使用情况等,这对于系统性能分析和故障排查很有帮助。 3. **内存状态**:提供总内存、已用内存、空闲内存等数据,以及内存分配和使用率...

    Android的cpu硬盘内存网络设置系统信息硬件信息.pdf

    本文主要围绕Android设备的CPU、硬盘、内存以及网络设置等信息的获取进行探讨。 首先,查看手机信息的可行性分析涉及到对系统接口的理解和使用。在Android系统中,大部分硬件和系统信息可以通过Java API或者系统...

    java(jni)获得CPU、内存使用率 绝对可用

    在Java编程环境中,有时我们需要获取系统的资源使用情况,如CPU和内存的利用率。为了实现这一目标,我们可以利用JNI(Java Native Interface),它提供了一种方式让Java代码能够调用C/C++编写的本地方法,从而获取...

    Linux服务器监测命令及CPU、硬盘、内存状态命令

    首先,/proc文件系统是Linux内核提供的一个接口,它以文件的形式存在于内存中,通过这个接口,系统管理员可以访问到内核内部的数据结构,并获取系统及进程的实时信息,包括CPU、硬盘、内存等硬件的状态。/proc文件...

    获取cpu使用率和内存使用情况

    通过阅读和理解这个文件,我们可以学习如何直接从操作系统获取内存使用情况。 综上所述,掌握获取和分析CPU使用率及内存使用情况的技能对IT专业人员至关重要,无论是为了优化代码、监控系统健康还是解决问题。通过...

    java实现的系统进程调度实验

    这个实验旨在通过Java语言来模拟实际操作系统中的系统进程调度过程,同时在实验二中加入了内存分配的模拟,以帮助学习者更深入地理解这些概念。 首先,我们来看"进程调度"。在操作系统中,进程调度是决定哪个进程在...

    涉及进程和内存等的工具和说明文档

    在Linux系统中,`ps`命令可以列出当前系统中的所有进程,而`top`或`htop`提供实时的进程监控,包括CPU使用率、内存占用等信息。 内存管理是操作系统的核心功能之一,主要分为物理内存和虚拟内存。物理内存是指...

    查看CUP、内存、硬盘使用情况

    Sigar 是一个跨平台的系统监控库,由Hypertable项目开发,提供了一种统一的方式来获取各种操作系统的信息,包括CPU、内存、硬盘使用率等。在Windows系统下,使用Sigar时,我们需要确保对应的动态链接库文件(如`lib...

    检测CPU、内存、网速、线程的工具

    对于开发者,`DotnetSysmon`是一个针对.NET环境的系统监视工具,它可以提供详细的CPU使用信息,包括进程、线程等的CPU利用率。 内存,或称RAM(随机存取存储器),是计算机运行过程中临时存储数据的地方。内存不足...

Global site tag (gtag.js) - Google Analytics