什么';Java中的引用变量中有什么?
我们知道对象引用变量包含表示访问对象的方式的位 它不保存对象本身,但保存指针或地址之类的内容 我读了第一本Java(第二版)的书,书中写到(第3章,第54页) 在Java中,我们并不真正知道什么是 在引用变量内部。是的 要知道,不管是什么,它都是 表示一个且仅一个对象。 JVM知道如何使用 获取对象的引用。- 我想问:什么';Java中的引用变量中有什么?,java,variables,jvm,reference,Java,Variables,Jvm,Reference,我们知道对象引用变量包含表示访问对象的方式的位 它不保存对象本身,但保存指针或地址之类的内容 我读了第一本Java(第二版)的书,书中写到(第3章,第54页) 在Java中,我们并不真正知道什么是 在引用变量内部。是的 要知道,不管是什么,它都是 表示一个且仅一个对象。 JVM知道如何使用 获取对象的引用。- 我想问: 对象引用变量是否包含指针、地址或什么 JVM如何解释这一点 这取决于JVM。除了可以通过Java引用访问对象之外,Java引用不保证有任何语义。Sunacle的做法也可能与IB
- 对象引用变量是否包含指针、地址或什么
- JVM如何解释这一点
- 这取决于JVM。除了可以通过Java引用访问对象之外,Java引用不保证有任何语义。Sunacle的做法也可能与IBM有所不同
实际上,它通常可能是某种类型的指针,尽管可能不直接指向对象,因为它可以被GC移动。它完全是特定于JVM的。它可能是地址、指针或更复杂的东西。您没有或需要比使用引用获取对象更困难的保证。完全由JVM来确定引用中的内容 在最简单的情况下,它只是一个指针(即地址)。在更复杂的情况下,虚拟机可能会根据情况使用不同的表示法-例如,您可能想继续阅读本文,了解热点虚拟机在作为64位虚拟机运行时如何避免在某些(但不是所有)位置将引用大小加倍
重要的是你既不知道也不关心。就程序员而言,它只是一组不透明的位——它的唯一目的是让您访问所讨论的对象(或标识空引用)。由JVM决定引用的具体实现方式
话虽如此,出于性能原因,任何“合理”的实现都可能使用直接指针或某种形式的压缩指针。我相信这适用于所有当前的生产JVM。一个合理的问题是“如何在的JVM中实现引用”。@Samuel-这取决于如何定义“合法”。除非您希望修改JVM本身,否则这些信息没有实际用途。好奇是可以的,但这类问题总是让我觉得有人坚持C的思维方式