文章收藏-FAQ 位置:电脑学习网

获取 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));
   }
   }

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822