我目前正在构建一个 Java 应用程序,它最终可以在许多不同的平台上运行,但主要是 Solaris、Linux 和 Windows 的变体。
有没有人能够成功提取信息,例如当前使用的磁盘空间、CPU 利用率和底层操作系统中使用的内存?Java 应用程序本身正在消耗什么?
最好我想在不使用 JNI 的情况下获取这些信息。
您可以从 Runtime 类中获取一些有限的内存信息。它确实不是您正在寻找的东西,但我想为了完整起见我会提供它。这是一个小例子。编辑:您还可以从 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()); } } }