java吧 关注:1,241,260贴子:12,714,912
  • 8回复贴,共1

【求助】sigar相关-单个进程占CPU百分比

只看楼主收藏回复

想得到针对每一个进程的占CPU的百分比,但是用getpercent()这个打印出来老是0.0。上网搜了好久也没有搜到用java写的得到单个进程占CPU百分比的例子。第一次接触这些东西所以懂得不多,求帮助T_T……最后再次谢谢!!


IP属地:北京1楼2013-02-24 17:54回复
    顶起来自己的贴会被删么。。认真求助啊。。。这个试了好多种方法都不对。。
    PS.getinfo里面的信息没有CPU占百分比的TAT。。。


    IP属地:北京2楼2013-02-24 19:13
    收起回复
      getpercent()前要先调gather()


      IP属地:辽宁来自手机贴吧4楼2013-02-25 14:47
      收起回复
        错误是:Exception in thread "main" org.hyperic.sigar.SigarPermissionDeniedException: Access is denied.
        然后指向的是这一句: timer = sigar.getProcCpu(pids[i]);//timer = ProcCpu类型
        ======================
        pids是PID的数组。然后for循环里大概是这样:
        {
        timer = sigar.getProcCpu(pids[i]);//timer = ProcCpu类型
        timer.gather(sigar, pids[i]);
        double cpuper= timer.getPercent();
        System.out.println("["+i+"]"+"CPU占用率"+cpuper);
        }
        ======================


        IP属地:北京5楼2013-02-26 15:08
        回复
          long pid = Long.valueOf(args[0]);
          Sigar sigar = new Sigar();
          ProcCpu cpu = new ProcCpu();
          for (int i=0; i<5;i++ ) {
          cpu.gather(sigar, pid);
          Thread.sleep(1000); // 经验表明,使用sleep 再取值会有数值
          System.out.println("--------ProcCpu " + i + ":" + pid + "----------");
          System.out.println("getLastTime:" + getTime(cpu.getLastTime()));
          System.out.println("getPercent:" + (cpu.getPercent() * 100));
          System.out.println("getStartTime:" + getTime(cpu.getStartTime()));
          }


          6楼2013-05-16 13:57
          回复
            我也遇到这个问题了……


            8楼2016-01-27 15:41
            回复
              我也遇到了,求解决;因为没有权限,可是怎么才能有权限呢


              9楼2017-05-02 15:13
              回复