`

用java取得linux系统cpu、内存的实时信息

    博客分类:
  • Java
阅读更多

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/**
* 取得linux系统下的cpu、内存信息

* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public final class LinuxSystemTool
{
   /**
   * get memory by used info
   * 
   * @return int[] result
   * result.length==4;int[0]=MemTotal;int[1]=MemFree;int[2]=SwapTotal;int[3]=SwapFree;
   * @throws IOException
   * @throws InterruptedException
   */
   public static int[] getMemInfo() throws IOException, InterruptedException
   {
      File file = new File("/proc/meminfo");
      BufferedReader br = new BufferedReader(new InputStreamReader(
      new FileInputStream(file)));
      int[] result = new int[4];
      String str = null;
      StringTokenizer token = null;
      while((str = br.readLine()) != null)
      {
         token = new StringTokenizer(str);
         if(!token.hasMoreTokens())
            continue;
   
         str = token.nextToken();
         if(!token.hasMoreTokens())
            continue;
   
         if(str.equalsIgnoreCase("MemTotal:"))
            result[0] = Integer.parseInt(token.nextToken());
         else if(str.equalsIgnoreCase("MemFree:"))
            result[1] = Integer.parseInt(token.nextToken());
         else if(str.equalsIgnoreCase("SwapTotal:"))
            result[2] = Integer.parseInt(token.nextToken());
         else if(str.equalsIgnoreCase("SwapFree:"))
            result[3] = Integer.parseInt(token.nextToken());
      }
   
      return result;
   }

   /**
   * get memory by used info
   * 
   * @return float efficiency
   * @throws IOException
   * @throws InterruptedException
   */
   public static float getCpuInfo() throws IOException, InterruptedException
   {
      File file = new File("/proc/stat");
      BufferedReader br = new BufferedReader(new InputStreamReader(
      new FileInputStream(file)));
      StringTokenizer token = new StringTokenizer(br.readLine());
      token.nextToken();
      int user1 = Integer.parseInt(token.nextToken());
      int nice1 = Integer.parseInt(token.nextToken());
      int sys1 = Integer.parseInt(token.nextToken());
      int idle1 = Integer.parseInt(token.nextToken());
   
      Thread.sleep(1000);

      br = new BufferedReader(
      new InputStreamReader(new FileInputStream(file)));
      token = new StringTokenizer(br.readLine());
      token.nextToken();
      int user2 = Integer.parseInt(token.nextToken());
      int nice2 = Integer.parseInt(token.nextToken());
      int sys2 = Integer.parseInt(token.nextToken());
      int idle2 = Integer.parseInt(token.nextToken());

      return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
   }
}

/**
* 测试类

* <p>@author javer QQ:84831612</p>
* @date 2005
*/
public class JaverTest
{
    public static void main(String[] args) throws Exception
    {
        int[] memInfo = LinuxSystemTool.getMemInfo();
        System.out.println("MemTotal:" + memInfo[0]);
        System.out.println("MemFree:" + memInfo[1]);
        System.out.println("SwapTotal:" + memInfo[2]);
        System.out.println("SwapFree:" + memInfo[3]);

        System.out.println("CPU利用率:" + LinuxSystemTool.getCpuInfo());
    }
}

分享到:
评论

相关推荐

    基于Linux网络计算机Java虚拟机的性能优化.pdf

    针对这一挑战,一种优化策略是在Kaffe虚拟机中应用和改进直接线索式解释器优化技术,以适应Linux NC的硬件配置和软件模式,同时确保较低的CPU和内存成本,从而提升Java虚拟机的运行效率。 网络计算机(NC)是网络...

    Linux 嵌入式应用程序的开发

    开发者需掌握如何优化代码以减少CPU使用率,提高实时性能,并降低功耗。 7. **调试技术**:在没有标准桌面环境的嵌入式系统中,调试工具如GDB、JTAG和串行端口通信是必不可少的。学会使用这些工具能有效定位和解决...

    Linux线程库: NPTL

    - **内存使用效率**:NPTL在内存管理和使用方面更加高效。 - **锁机制**:NPTL改进了锁机制,减少了死锁的可能性。 #### 四、结论 NPTL作为下一代线程库,不仅解决了原有LTT库的一些关键问题,还在性能和标准化...

    java前期总结(面向对象及之前)

    系统软件如Windows、Linux等操作系统;应用软件则包括Word、QQ等用户直接使用的程序。 **1.1.2 计算机语言** 计算机语言用于编写程序,以便计算机能够理解和执行任务。常见的计算机语言包括C、C++、Java等。此外,...

    软考 嵌入式系统设计师

    2. 操作系统:嵌入式系统通常运行实时操作系统(RTOS),如FreeRTOS、VxWorks或Linux的实时内核。设计师应熟悉操作系统的调度策略、中断处理、多任务管理以及内存管理机制。 3. 软件开发:编程语言如C和C++是嵌入式...

    信息处理技术员教程 唐多强.7z

    这包括计算机系统的组成原理,如CPU、内存、存储设备等;操作系统的基本概念,如Windows、Linux等;以及数据通信和网络基础,如TCP/IP协议、局域网与广域网技术。 2. **中册**:可能深入到数据库管理与编程语言。这...

    2万字Java并发编程面试题合集(含答案,建议收藏)

    进程则是系统分配资源的基本单位,每个进程有自己的独立内存空间。 3. **上下文切换**:多线程中的上下文切换是指操作系统在执行线程时保存和恢复其上下文的过程,以便在将来恢复执行。 4. **死锁与活锁、饥饿的...

    深大 计系二 复习提纲.pdf

    计算机硬件是计算机系统的基础组成部分,它包括CPU、内存、硬盘、I/O接口等。CPU(中央处理单元)是计算机的核心部件,负责解释和执行指令。内存(如RAM)是临时存储正在执行程序的存储器,用于存储临时数据和程序...

    宁波波导软件有限公司笔试题

    2. 实时操作系统(RTOS):了解FreeRTOS、VxWorks等常见RTOS的工作原理和API使用。 3. Linux内核:理解Linux内核模块、设备驱动、中断处理等。 四、数据结构与算法: 1. 基本数据结构:数组、链表、栈、队列、树、...

    信息处理技术员提分必备知识点_信息处理技术员提分必备知识点_

    1. **计算机基础知识**:首先,你需要理解计算机硬件的构成,包括CPU(中央处理器)、内存(RAM)、硬盘、显示器等,以及它们如何协同工作。还要了解操作系统的基本功能,如资源管理、任务调度和用户界面。 2. **...

    android开发关键技术之旅

    - 性能监控:使用Android Profiler分析内存、CPU和网络使用情况,优化代码性能。 通过这个压缩包提供的项目代码,您可以逐步地跟随实践,从零开始构建一个完整的Android应用。这将帮助您巩固理论知识,提高解决...

    一年计算机一级B考试复习提纲.pdf

    计算机一级B考试复习提纲涵盖了信息技术基础、计算机硬件、软件、操作系统、计算机网络等多个方面的内容。以下是这些知识点的详细说明: 一、信息技术基础 1. 信息技术:涉及信息的获取、处理、存储、传播和应用的...

    下半年全国统考教师资格考试《信息技术学科知识与教学能力》复习全书.docx

    面,考生需要了解计算机硬件的基本组成,如中央处理器(CPU)、内存(RAM)、硬盘(HDD/SSD)、输入输出设备等,以及它们在计算机工作中的作用。在计算机网络部分,要掌握网络通信协议(如TCP/IP)、网络拓扑结构、...

    江苏专转本计算机基础各章知识点含习题试卷.pdf

    任务管理中的进程管理涉及CPU的调度,而虚拟存储器则允许扩展内存容量。文件系统是所有程序、数据和文档的存储载体。 常见的操作系统有Windows系列,如Windows 9X、NT、2000、XP、Vista等,这些系统具有图形用户...

    青鸟学员S1复习资料

    2. 操作系统原理:S1复习资料可能包含Windows、Linux或Mac OS等常见操作系统的使用和管理知识,包括文件管理、用户权限、进程管理、任务调度等。了解操作系统的运行机制对解决实际问题至关重要。 3. 网络技术:网络...

    公务员计算机专业考试

    1. 计算机基础知识:这部分内容包括计算机的发展历程、计算机系统的组成(如CPU、内存、硬盘等)、数据的存储单位(如比特、字节等)、计算机工作原理以及计算机软件和硬件的基本概念。 2. 操作系统:操作系统是...

    计算机研究

    根据给定的信息,“计算机研究”这一主题主要面向的是计算机科学领域的初学者,旨在提供一份易于理解且实用性强的入门指南。下面将从计算机基础知识、硬件组成、操作系统介绍、编程语言入门等多个方面进行详细阐述,...

    1-计算机基础相关知识.zip

    常见的操作系统有Windows、macOS、Linux等。了解操作系统的概念、工作原理和基本操作,如文件管理、进程管理、系统设置等,是每个IT人的必修课。 网络通信是现代计算机应用的重要部分。TCP/IP协议栈是互联网的基础...

Global site tag (gtag.js) - Google Analytics