如何在Oracle的JVM中实现引用?

zin*_*rod 5 java reference object

在搜索有关如何在Java中实现引用变量的解释时,我遇到了这样一个问题: Java中的引用变量内部有什么? 在Samuel_xL的评论中说,指定供应商名称将是一个更好的问题.所以我的问题是如何在Oracle JVM中实现实例变量?它是指向地址的指针吗?我知道引用包含告诉JVM如何访问对象的位.但它是如何构建的?

Jon*_*oni 1

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