【问题标题】:Is it possible to detect processor architecture in java? [duplicate]是否可以在 java 中检测处理器架构? [复制]
【发布时间】:2013-02-20 20:37:46
【问题描述】:

是否可以在 java 中检测处理器架构?像 x86 或 sun SPARC 等?如果是这样,我将如何去做?

【问题讨论】:

  • 哪个操作系统?阅读某些文件,如 Linux 上的 /proc/cpuinfo 有帮助吗?
  • @TwoMore:主要是Solaris和windows
  • @shawn 那么您最好使用纯 java 的平台无关解决方案,请参阅下面的答案。
  • 此 q 已作为副本关闭,但链接的问题并未具体询问处理器架构。不要去那里,而是阅读一些答案以获得更好的信息。

标签: java cpu-architecture


【解决方案1】:

您可以尝试System.getenv() 获取环境变量,使用PROCESSOR_ARCHITECTURE 密钥获取 CPU 架构:

System.out.println(System.getenv("PROCESSOR_ARCHITECTURE"));

或者在 64 位的情况下:

System.out.println(System.getenv("PROCESSOR_ARCHITEW6432"));

另一种方法是使用“os.arch”system property:

System.getProperty("os.arch");

并且您可能需要在使用 System.getProperty("os.name") 之前获取操作系统,因为正如 QMuhammad 在他的回答中提到的那样,这取决于操作系统。

通知that

系统属性和环境变量都是 名称和值之间的概念映射。两种机制都可以 用于将用户定义的信息传递给 Java 进程。

相关链接:

【讨论】:

  • 这仅适用于 MS Windows,并且仅适用于某些版本的 MS Windows。
  • @MikhailVladimirov 我编辑了我的答案,但您提到的内容非常有趣,认为这将与平台无关
  • 至少官方规范中有这样的描述:docs.oracle.com/javase/7/docs/api/java/lang/…
  • @MikhailVladimirov 谢谢,+1 链接
  • 仅适用于 Windows NT(98、2000、xp、vista、7、8、8.1 等)
【解决方案2】:
System.getProperty ("os.arch");

在我的电脑上返回amd64

【讨论】:

【解决方案3】:

您可以使用以下属性来获取处理器架构:

     System.getProperty("sun.cpu.isalist");

它返回“amd64”,因为我使用的是 Intel 的 64 位处理器,而 Intel 64 位使用的是 amd 架构。

如果您需要操作系统架构值,您可以使用此属性“os.arch”

如果您需要任何其他属性,那么这可能会对您有所帮助。我写了以下 sn-p 来获取所有系统属性:

    public static void main(String[] args) {
    Properties props = System.getProperties();
    Enumeration<Object> keys = props.keys();

    while(keys.hasMoreElements()){
        Object key = keys.nextElement();
        Object value = props.get(key);
        System.out.println("Key: "+key + " Value: "+value);
    }
}

【讨论】:

  • 属性sun.cpu.isalist 不是标准的。你最好使用标准的os.arch 属性。
  • 我提到了两者,所以两者都可以工作。此外,“sun.cpu.isalist”不是在 Linux 上设置的,而是在 Solaris 和 Windows 上设置的。取决于您正在使用的平台。
猜你喜欢
  • 1970-01-01
  • 2020-09-10
  • 2021-08-02
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
相关资源
最近更新 更多