[英]How to get cpu, gpu and os full name
能否在Java中得到CPU、GPU和OS的全称?
例如:
Intel(R) Core(TM) i3-8100 CPU @ 3.60GHZ 3.60GHZ
NVIDIA GeForce GTX 980 Ti 6GB
Windows 10 PRO x64 2004
System.getProperty("os.arch")
您提供x86_64
之类的东西。
System.getProperty("os.name")
为您提供类似Mac OS X
的东西。
System.getProperty("sun.cpu.endian")
您的帮助little
(这是一个非标准的属性名称)。
除此之外,答案大多是“不,你不能那样做”。
您可以做的是检查您所在的操作系统,并通过本机接口 (JNI) 或使用ProcessBuilder
执行已知默认安装在您的操作系统上的命令行工具来启动操作系统和体系结构特定工具重新获取此信息。
例如,如果您知道您正在安装一些 posix(例如,mac 或 linux),您可以使用 processbuilder 运行/usr/bin/uname -a
,它会得到类似的东西:
Darwin YourSystemName.local 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64
您可以运行/usr/sbin/sysctl -n machdep.cpu.brand_string
来获得类似Intel(R) Core(TM) i7-1060NG7 CPU @ 1.20GHz
的东西。
但是, /usr/sbin/sysctl
可能不在您的系统上。 它绝对不会出现在 windows 盒子上,它可能不会出现在各种口味的 linux 上。
尝试测试这样的设置将非常棘手。 您需要数百个部署(您希望支持的所有 linux 版本、各种 mac 版本、一堆 windows 版本等等)。
换句话说,这是一个相当复杂的项目!
我会考虑使用处理所有这些的库,例如OSHI 。 OSHI 是一个免费的基于JNA (本机)的操作系统和硬件信息库,适用于 Java。
我最近使用了 OSHI api https://github.com/oshi/oshi它为您提供了许多 api 以获取与 CPU 信息和操作系统相关的详细信息。
另一种选择是 Hyperic 的 SIGAR API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.