如何确保JDK版本与操作系统架构匹配?

1. 序言

  • 最近的工作中,需要升级JDK版本到17.0.7+,以解决一个JDK bug:JDK-8299626

  • 该bug的core dump关键字如下:

    bash 复制代码
    SIGSEGV in PhaseIdealLoop::build_loop_late_post_work
  • 公司JDK团队提供的、包含JDK的基础镜像,有aarch64x86_64之分

  • 因此,问题来了:根据宿主机的操作系统架构,应该选择哪个基础镜像?

2. 通过操作系统架构,选择合适的JDK版本

  • 首先,根据不同的操作系统,使用不同方式确定系统架构
  • 例如,对Linux或mac OS,使用uname -m查看系统架构。不同返回值的含义如下:
    • x86: 32 位 x86 架构(例如,Intel Pentium、AMD Athlon 等)
    • x86_64: 64 位 x86 架构,也称为 AMD64 或 Intel 64 (例如,Intel Core 2 Duo、AMD Opteron 等)
    • ia64: 64 位 Itanium 架构
    • sparc: SPARC 架构(适用于 Solaris 操作系统)
    • arm: ARM 架构
    • aarch64: ARM 64 位架构
  • 接着,如果是在社区下载open JDK,则可以根据系统架构,选择对应的JDK
  • 例如,mac OS执行返回的架构信息如下,则在下载jdk-17.0.9+9时,选择OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.9_9.tar.gzOpenJDK17U-jdk_aarch64_mac_hotspot_17.0.9_9.pkg

3. 若JDK已安装,如何验证安装的版本是否与操作系统架构匹配?

方法1:查看JDK release文件

  • 找到JDK的安装目录,也就是环境变量JAVA_HOME的值

    bash 复制代码
    # linux系统
    export | grep "JAVA_HOME"
  • 进入JDK安装目录,查看release文件

    bash 复制代码
    # linux系统
    cat release
  • OS_ARCH是否与操作系统架构匹配 ------ 注意: OS_ARCH 是指 Java 运行时环境(JRE)的操作系统架构,而不是指操作系统本身的架构

方法2:使用命令 java -XshowSettings:properties -version

  • 使用命令 java -XshowSettings:properties -version,其打印的os.arch更加具体,比如x86_64可以显示是amd64还是Intel 64
  • 疑问: release中显示x86_64,而这里显示amd64。难道一个是JDK的系统架构,一个是操作系统本身的架构?欢迎大佬指点、交流
  • 笔者目前认为:二者都是JDK的系统架构,只是java -XshowSettings:properties -version将x86_64架构具体到了amd64,以表明当前JDK可以适应adm64的操作系统架构

方法3:使用公司自创命令cat current_revision (不具有普遍性)

  • 同样地,找到JDK的安装目录,然后执行cat current_revision
  • 仔细查看该命令的输出后,笔者认为这应该是公司自创的命令,可能对大多数JDK并不通用
相关推荐
马猴烧酒.4 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
sino爱学习5 小时前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端
风生u5 小时前
activiti7 详解
java
岁岁种桃花儿5 小时前
SpringCloud从入门到上天:Nacos做微服务注册中心(二)
java·spring cloud·微服务
Word码5 小时前
[C++语法] 继承 (用法详解)
java·jvm·c++
TT哇6 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js
逝水如流年轻往返染尘6 小时前
Java中的数组
java
java1234_小锋6 小时前
Java高频面试题:BIO、NIO、AIO有什么区别?
java·面试·nio
用户8307196840826 小时前
Java IO三大模型(BIO/NIO/AIO)超详细总结
java
sheji34166 小时前
【开题答辩全过程】以 基于SSM的花店销售管理系统为例,包含答辩的问题和答案
java