gpt4 book ai didi

java - JVM是按照OS还是CPU架构开发的?

转载 作者:行者123 更新时间:2023-11-29 04:35:21 25 4
gpt4 key购买 nike

我搜索了很多这个问题,但没有得到满意的答案。我知道 JVM,但我真的不明白 oracle 是否需要为每种类型的 CPU 或只为特定操作系统制作 JVM。如果我错了请纠正我,但我得出的结论是它以操作系统为中心,因为 JVM 是由操作系统作为普通程序运行的。如果是这样,oracle 是否需要为每个 linux 发行版开发不同的 JVM?但是在网上搜索时,我发现了关于架构的文章。我真的很困惑。任何帮助表示赞赏。

最佳答案

两者皆有。

以HotSpot JVM为例(OpenJDK和Oracle JDK都是基于这个JVM)

HotSpot 源代码(用 C++ 编写)主要由独立于平台的代码组成,但它们也包括大量特定于 CPU 的代码和特定于操作系统的代码。此外,还有针对特定操作系统/CPU 组合的平台相关代码。

这种区别体现在 directory structure 中.以下是 HotSpot 资源的组织方式:

+ src
|
|--+ cpu
| |
| |--- ppc
| |--- sparc
| |--- x86
| |--- zero
|
|--+ os
| |
| |--- aix
| |--- bsd
| |--- linux
| |--- posix
| |--- solaris
| |--- windows
|
|--+ os_cpu
| |
| |--- aix_ppc
| |--- bsd_x86
| |--- bsd_zero
| |--- linux_ppc
| |--- linux_sparc
| |--- linux_x86
| |--- linux_zero
| |--- solaris_sparc
| |--- solaris_x86
| |--- windows_x86
|
|--+ share
|
|--+ vm
|
|--- classfile
|--- compiler
|--- gc_implementation
|--- gc_interface
|--- runtime
|--- services
|--- etc.

要为特定平台构建 JVM 二进制文件,需要获取所有相关目录的源代码。例如。 HotSpot Linux/x86 构建需要 share , cpu/x86 , os/linuxos_cpu/linux_x86 .

操作系统/CPU 的所有有效组合都是单独构建和测试的。结果,您终于可以在 JDK download page 上看到一堆特定于平台的二进制文件。 .

对于不同的 Linux 发行版,不需要构建单独的二进制文件,只要目标架构相同即可。 JDK 对第三方库的依赖性最低。 JVM 链接到相当旧的版本 glibc ,因此它几乎可以在任何流行的 Linux 发行版上运行。

关于java - JVM是按照OS还是CPU架构开发的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41857592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com