使用Java检测CPU速度/内存/网络速度?

9

在 Java 中,是否有可能识别可用的总 CPU 速度以及总系统内存?同时,也可以识别连接到网络的速度。

4个回答

3
这取决于您的操作系统,因为Java会告诉您有关底层机器的很少信息。不幸的是,您必须使用不同的方法,具体取决于您的操作系统。
如果您在Linux上,请查看/proc/cpuinfo文件系统以获取CPU信息。 /proc通常包含大量信息。网络(IO)将通过命令ifconfig反映。
如果您在Windows上,则一个有用的工具是WMI,它提供对各种低级硬件统计数据的访问。您可以通过CScript运行WMI脚本。 这里有一些WMI脚本的示例页面

2
Properties p = System.getProperties();   
    p.list(System.out); 
    System.out.print("Total CPU:");
    System.out.println(Runtime.getRuntime().availableProcessors());
    System.out.println("Max Memory:" + Runtime.getRuntime().maxMemory() + "\n" + "available Memory:" + Runtime.getRuntime().freeMemory());
    System.out.println("os.name=" + System.getProperty("os.name"));

请尝试以上操作


java testtest.java:3: cannot find symbol symbol : class Properties Properties p = System.getProperties(); - Tim
@Tim,你应该先导入Properties,即import java.util.* - Arwan Khoiruddin

2
也许SIGAR可以提供您需要的一些东西。

0

通过Runtime对象可以获取内存统计数据。同时,您也可以查看jconsole,这是一个图形化客户端,用于展示JMX启用的Java虚拟机信息,它显示了大量的信息,包括CPU使用率,因此您可以编写自己的客户端来访问JMX信息。


是的,似乎Java非常保护应用程序与硬件的交互方式。我从Runtime对象中看到的内存统计信息只是虚拟机将使用的,而不是实际可用的总量。 - Kirk Ouimet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接