- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 Java 获取当前运行的 Java 虚拟机使用的 CPU 百分比。我的研究指出我使用 com.sun.management.OperatingSystemMXBean
类。根据在线示例,我编写了以下内容:
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class TestClass {
public static void main (String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}
}
在两台机器上测试后,我无法停止两次调用都得到 -1.0
的结果。我尝试通过各种方法使用 64 位和 32 位版本的 Java 7 和 6 运行此代码。尽管如此,我得到的只是 -1.0
的打印,according to the Javadocs ,
根据系统中正在进行的 Activity ,0.0 和 1.0 之间的所有值都是可能的。如果系统最近的 cpu 使用率不可用,则该方法返回一个负值。
我不知道还能在这里做什么。获得 CPU 负载至关重要,我想避免使用其他库,如 Sigar。有人对此问题有任何建议或有任何见解吗?
最佳答案
只是回答我自己的问题,以防它能帮助到别人。
我所做的在技术上是正确的,但是我没有给 OperatingSystemMXBean
足够的时间来收集 CPU 使用信息。 JVM 必须实际运行几秒钟才能收集 CPU 使用信息,然后刷新分辨率似乎取决于实现。
运行具有以下更改的代码将在约 2 秒后在我的机器上开始生成使用信息:
public static void main(String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();
while (true) {
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}
}
希望对大家有帮助
关于java - 使用 OperatingSystemMXBean 获取 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19781087/
我在 RHEL 上使用 Oracle JDK 7 com.sun.management.OperatingSystemMXBean.getSystemCpuLoad() 方法是否返回机器上所有可用 c
我有这段代码来读取物理内存: com.sun.management.OperatingSystemMXBean os = (com.sun.management.OperatingSystemMXBe
我们有一段代码需要监控CPU负载。我们使用以下代码行获取 CPU 负载: ((com.sun.management.OperatingSystemMXBean) ManagementFactory
我看到 jdk6 的代码具有以下 OperatingSystemMXBean 方法: OperatingSystemMXBean osbean = (OperatingSystemMXBean
我正在尝试使用 Java 获取当前运行的 Java 虚拟机使用的 CPU 百分比。我的研究指出我使用 com.sun.management.OperatingSystemMXBean 类。根据在线示例
我有一些遗留代码用于监控我的应用程序 cpu、内存等,我想将它们转换为一个包。现在当我开始这个包时它提示 Missing Constraint: Import-Package: com.sun.man
我在 JRE 系统库中看到了 org.sun.management,但我无法在我的 eclipse 中导入。允许的任何原因。连maven编译都失败 这是屏幕截图。 我正在使用 Java 8。 我正在尝
我在尝试在 Eclipse 中编译一些 Java 代码时遇到了一些麻烦。我不断收到以下警告... Access restriction: The type OperatingSystemMXBean
我已将我的 Eclipse 配置为使用 JRE 8。我在 buildPath 中确认了它。 编译器指定为1.8。 我正在尝试获取 SystemCpuLoad .这是我的。 import java.la
我是一名优秀的程序员,十分优秀!