有没有办法在Java中获取有关CPU模型(对于Unix系统)的信息?我的意思是不使用cat /proc/cpuinfo
之类的系统命令。
我想得到类似“Intel®Xeon(R)CPU E5-2640 0 @ 2.50GHz”的字
谢谢!
答案 0 :(得分:0)
如果您希望获得如此详细的信息,最好的选择是阅读/proc/cpuinfo
的内容并解析出想要的部分。
否则,您可以从JVM中获得number of processor cores
的计数int count = Runtime.getRuntime().availableProcessors();
String arch = System.getProperty("os.arch");
答案 1 :(得分:0)
我认为这个问题是这个get OS-level system information的重复,但是我将重新发布该问题的最佳答案。
您可以从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()); } } }
在您的情况下,您需要Runtime.getRuntime().availableProcessors()
。
还有另一种使用sigar API的方法。为此,您需要从this link下载sigar,并选中它以将其包含在项目How to include SIGAR API in Java Project中。
然后您将使用以下内容:
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
public class CpuInfo {
public static void main(String[] args) throws SigarException {
Sigar sigar = new Sigar();
org.hyperic.sigar.CpuInfo[] cpuInfoList = sigar.getCpuInfoList();
for(org.hyperic.sigar.CpuInfo info : cpuInfoList){
System.out.println("CPU Model : " + info.getModel());
}
}
}
答案 2 :(得分:0)
我只会读/proc/cpuinfo
。
String model = Files.lines(Paths.get("/proc/cpuinfo"))
.filter(line -> line.startsWith("model name"))
.map(line -> line.replaceAll(".*: ", ""))
.findFirst().orElse("")