gpt4 book ai didi

java - 关于 JVM 规范中引用大小的混淆

转载 作者:行者123 更新时间:2023-12-05 06:56:45 25 4
gpt4 key购买 nike

JVM 规范规定引用只占用一个局部变量槽(jvms12 2.6.1)。此外,它指出 doublelong 占用两个局部变量槽,因为它们是 64 位的。

这是否意味着所有符合 JVM 的实现都必须使用 32 位寻址? 64 位 JVM 如何处理这个问题?他们使用 64 位局部变量槽,还是使用 2 个槽作为引用?

最佳答案

Does this mean that all JVM compliant implementations must use 32-bit addressing? How do 64-bit JVMs handle this? Do they use 64 bit local variable slots, or do they use 2 slots for references?

没有。

槽是一种抽象,其目的是允许指定字节码的行为。 JVM 解释器和 JIT 编译器做了一些聪明的事情来将槽映射到虚拟内存地址。这些映射考虑到引用可能是 32 位或 64 位地址(或 32 位压缩 OOP)这一事实

一个(抽象的)槽用于引用,不考虑指针的实际大小。

问:他们为什么要这样定义插槽?

A:所以相同的字节码在 32 位和 64 位 Java 平台上具有相同的含义!

问:如果您尝试将插槽中的内容视为不同类型,为什么它不会分崩离析?

A:因为 JVM 的字节码分析器不允许你那样做!

关于java - 关于 JVM 规范中引用大小的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65077738/

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