请问Java中获得CPU使用率的办法?windows系统

Windows系统中?如何获得?谢谢... Windows系统中? 如何获得?谢谢 展开
 我来答
sunjinfu1987
2015-12-16 · TA获得超过3151个赞
知道大有可为答主
回答量:1218
采纳率:72%
帮助的人:410万
展开全部

1、确定当前系统安装的jdk是1.6版本以上

2、windows系统中有获取cpu使用率的可执行文件exe,只要在java中获取该文件的执行路径,通过Java调用即可。

3、获取操作系统可执行文件目录procCmd

4、调用java的Runtime.getRuntime().exec执行cmd应用程序

5、利用java中sleep来计算睡眠前后cpu的忙碌时间与空闲时间,因为sleep不会释放系统资源

6、根据忙碌时间占总时间的比例来计算cpu使用率

示例:

private double getCpuRatioForWindows() {  
        try {  
            String procCmd = System.getenv("windir")  
                    + "//system32//wbem//wmic.exe process get Caption,CommandLine,"  
                    + "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";  
            // 取进程信息  
            long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));  
            Thread.sleep(CPUTIME);  
            long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));  
            if (c0 != null && c1 != null) {  
                long idletime = c1[0] - c0[0];  
                long busytime = c1[1] - c0[1];  
                return Double.valueOf(  
                        PERCENT * (busytime) / (busytime + idletime))  
                        .doubleValue();  
            } else {  
                return 0.0;  
            }  
        } catch (Exception ex) {  
            ex.printStackTrace();  
            return 0.0;  
        }  
    }
百度网友7eb2c0a
2011-01-31 · TA获得超过1258个赞
知道小有建树答主
回答量:478
采纳率:100%
帮助的人:289万
展开全部
Java无论在什么系统的情况下,都无法通过自身的API来监测CPU使用率。一个可能的做法是Runtime.exec()来获得你的Java程序运行的时候的PID,通过这个PID再使用其它监视软件来检测CPU运行状态。但是这个方法测量出来的数据依然是不稳定的。

另外还有一个比较复杂的做法,就是通过C语言来实现。如果你知道如果用C语言来监测自己的CPU使用率,又知道如何利用JNI吧你的C代码兼容地和你的Java程序放到一起,那你就可以利用这种原理通过C代码来监控。

具体C的部分要用到GetSystemInfo(),然后你可以查看当前程序所占用的系统资源。再通过这个方法把数据传回你的Java程序。因为太麻烦我自己也没做过。

此外你可以参考一些IDE是否带有这个功能。我记得NetBean可以做,但好像不是在Windows上面。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丶小四灬灬
2015-12-08 · 超过21用户采纳过TA的回答
知道答主
回答量:92
采纳率:100%
帮助的人:40.9万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c412081157
2015-11-30 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:184
采纳率:100%
帮助的人:65.6万
展开全部
这个可以用Sigar.jar这个包来做
细节代码我无法粘贴上去你可以上网上搜一下这个包的用法或api
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式