如何在Java中监视计算机的CPU、内存和磁盘使用情况?我想用Java监控以下系统信息:当前CPU使用率*(百分比)可用内存*(空闲/总计)可用磁盘空间(免费/总计)*注意,我指的是整个系统可用的总体内存,而不仅仅是JVM。我正在寻找一种跨平台解决方案(Linux、Mac和Windows),它不依赖于我自己调用外部程序或使用JNI的代码。虽然这些都是可行的选择,但如果有人已经有了更好的解决方案,我宁愿自己不维护操作系统特定的代码。如果有一个免费的库以可靠的、跨平台的方式实现这一点,那将是很棒的(即使它进行外部调用或使用本机代码本身)。任何建议都是非常感谢的。为了澄清,我想了解整个系统当前的CPU使用情况,而不仅仅是Java进程(ES)。SIGARAPI提供了我在一个包中寻找的所有功能,因此它是迄今为止对我的问题的最好回答。但是,由于它是根据GPL授权的,我不能将它用于我原来的目的(一个封闭的来源,商业产品)。Hyperic可能会授权SIGAR用于商业用途,但我还没有对它进行研究。对于我的GPL项目,我肯定会在未来考虑SIGAR。就我目前的需要而言,我倾向于以下几点:对于CPU的使用,OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()(每个CPU平均负载)为了回忆,OperatingSystemMXBean.getTotalPhysicalMemorySize()和OperatingSystemMXBean.getFreePhysicalMemorySize()对于磁盘空间,File.getTotalSpace()和File.getUsableSpace()限制:这个getSystemLoadAverage()而且磁盘空间查询方法只能在Java 6下使用。另外,一些JMX功能可能并不适用于所有平台(例如,据报道,getSystemLoadAverage()返回-1在Windows上)。虽然最初在GPL下获得许可,但它已经改变了到Apache2.0,一般可用于封闭源、商用产品。
添加回答
举报
0/150
提交
取消