java - Oracle 的 JVM 中是如何实现引用的?

标签 java object reference

在寻找有关如何在 Java 中实现引用变量的解释时,我遇到了这个问题: What's inside a reference variable in Java? Samuel_xL 在其中发表评论说,指定供应商名称将是一个更好的问题。 所以我的问题是如何在 Oracle JVM 中实现实例变量?它是指向地址的指针吗?我知道引用包含告诉 JVM 如何访问对象的位。 但它是如何构成的??

最佳答案

根据我能够确定的,对象引用被存储为称为 oop(普通对象指针)或 narrowOop 的类型,这取决于 JVM 是否是否使用压缩对象指针。 oop 是一个 C++ 类,它包装了指向 Java 对象的指针,而 narrowOop 是一个 32 位无符号整数,必须按顺序将其转换为适当的指针访问对象;它们没有内部结构。您可以在此处找到声明:http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/oops/oopsHierarchy.hpp

关于java - Oracle 的 JVM 中是如何实现引用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18134642/

相关文章:

java - 启动JavaFX程序时按钮为 "selected"

java - 如何使用maven启动和停止jetty

java - 运行时常量池 - 由运行时创建的变量填充?

php - 我的 PHP 引用数组是 "magically"成为一个值数组......为什么?

c - 为什么不能修改在函数中作为 const 通过引用传递的地址之后的下一个地址的值?

java - 如何将 vector 放入ND4J的INDArray中?

python - 如何根据对象属性对对象列表进行切片

javascript - 将一个数组设置为等于另一个数组使其表现得像一个对象,我错过了什么?

Java,通过arraylist调用对象方法

在 R 中滚动你自己的链表/树?