猿问

获取操作系统级系统信息

获取操作系统级系统信息

我目前正在构建一个Java应用程序,它可能最终在许多不同的平台上运行,但主要是Solaris、Linux和Windows的变体。

是否有人能够成功地提取诸如当前使用的磁盘空间、CPU的使用和底层操作系统中使用的内存等信息?Java应用本身正在消耗什么呢?

我更愿意在不使用JNI的情况下获取这些信息。


斯蒂芬大帝
浏览 402回答 3
3回答

www说

您可以从Runtime类获得一些有限的内存信息。这确实不是你想要的,但我想我会为了完整而提供它。下面是一个很小的例子。编辑:您还可以从java.io.File类获得磁盘使用信息。磁盘空间的使用需要Java1.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());     }   }}

眼眸繁星

我认为最好的方法是实现SIGARAPI..它适用于大多数主要操作系统(几乎所有现代操作系统),并且非常容易使用。开发人员在他们的论坛和邮件列表上非常有反应。我也很喜欢GPL 2 Apache许可..他们也用Java提供了大量的例子!SIGAR=系统信息、收集和报告工具。
随时随地看视频慕课网APP

相关分类

Java
我要回答