获取操作系统级系统信息

问题:

我正在构建一个Java应用程序,最终可以在许多不同的平台上运行,但主要是Solaris,Linux和Windows的变体。
有没有人能够成功提取诸如当前使用的磁盘空间,底层操作系统中使用的CPU利用率和内存等信息? Java应用程序本身正在消耗什么呢?
最好我不想使用JNI来获取这些信息。

回答:

您可以从运行时类获取一些有限的内存信息。它真的不是你正在寻找的,但我认为我将提供它为了完整性。这是一个小例子。编辑:您还可以从java.io.File类获取磁盘使用信息。磁盘空间使用情况需要Java 1.6或更高版本。

public class Main {
  public static void main(String[] args) {
    /* Total number of processors or cores available to the JVM */
    System.out.println("Available processors (cores): " + 
        Runtime.getRuntime().availableProcessors());

    /* Total amount of free memory available to the JVM */
    System.out.println("Free memory (bytes): " + 
        Runtime.getRuntime().freeMemory());

    /* This will return Long.MAX_VALUE if there is no preset limit */
    long maxMemory = Runtime.getRuntime().maxMemory();
    /* Maximum amount of memory the JVM will attempt to use */
    System.out.println("Maximum memory (bytes): " + 
        (maxMemory == Long.MAX_VALUE ? "no limit" : maxMemory));

    /* Total memory currently available to the JVM */
    System.out.println("Total memory available to JVM (bytes): " + 
        Runtime.getRuntime().totalMemory());

    /* Get a list of all filesystem roots on this system */
    File[] roots = File.listRoots();

    /* For each filesystem root, print some info */
    for (File root : roots) {
      System.out.println("File system root: " + root.getAbsolutePath());
      System.out.println("Total space (bytes): " + root.getTotalSpace());
      System.out.println("Free space (bytes): " + root.getFreeSpace());
      System.out.println("Usable space (bytes): " + root.getUsableSpace());
    }
  }
}

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: get OS-level system information

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

27 + = 33