获取linux的性能参数

 代码来自 Internet,版权属于原作者,本人对作者所做的工作非常尊重。
我对代码稍做了修改,主要是将 Integer 改为 Long,并且将转换方法改为 Long.decode(String)。

import java.io.*;
import java.util.StringTokenizer;

public final class SystemMonitorUtils
{
   public static long[] getMemInfo() throws IOException, InterruptedException
   {
      File file = new File("/proc/meminfo");
      BufferedReader br = new BufferedReader(new InputStreamReader(
      new FileInputStream(file)));
      long[] result = new long[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] = Long.decode(token.nextToken());
         else if(str.equalsIgnoreCase("MemFree:"))
            result[1] = Long.decode(token.nextToken());
         else if(str.equalsIgnoreCase("SwapTotal:"))
            result[2] = Long.decode(token.nextToken());
         else if(str.equalsIgnoreCase("SwapFree:"))
            result[3] = Long.decode(token.nextToken());
      }
      return result;
   }

   //单处理器负荷,或者多处理器的总负荷。
   public static float getCpuUsage() 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();
      long user1 = Long.decode(token.nextToken());
      long nice1 = Long.decode(token.nextToken());
      long sys1 = Long.decode(token.nextToken());
      long idle1 = Long.decode(token.nextToken());
   
      Thread.sleep(500);

      br = new BufferedReader(
      new InputStreamReader(new FileInputStream(file)));
      token = new StringTokenizer(br.readLine());
      token.nextToken();
      long user2 = Long.decode(token.nextToken());
      long nice2 = Long.decode(token.nextToken());
      long sys2 = Long.decode(token.nextToken());
      long idle2 = Long.decode(token.nextToken());

      return (float)((user2 + sys2 + nice2) - (user1 + sys1 + nice1)) / (float)((user2 + nice2 + sys2 + idle2) - (user1 + nice1 + sys1 + idle1));
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值