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

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

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