4

考虑:

public SomeClass implements SomeInterface{...}

SomeClass obj = new SomeClass();

SomeInterface x = obj;

我试图将第 3 行与我对内存管理的基本理解联系起来。我知道由“obj”表示的内存位置只包含一个指向 SomeClass 内存位置的指针。假设我使用的是 64 位 JVM,那么最多为“obj”指针分配 64 位。当 JRE 实现 x 时,在内存中创建了什么?它只是一个指向 SomeClass 的 64 位指针吗?

4

3 回答 3

3

无论您如何声明它,每个对象引用都占用相同数量的内存。

两个不同的引用也是如此xobj它们恰好指向同一件事。

于 2012-12-07T14:53:52.633 回答
1

在简单的句子中,引用在 Java 中使用相同的内存,但是声明。

用于内存分配的堆栈和堆,这将帮助您详细了解它是如何实现的

在此处输入图像描述 作品。

于 2012-12-07T14:57:06.203 回答
0

没有实际的内存开销,此时的SomeInterface声明只是一个语言结构,键入x以供编译器稍后检查。

于 2012-12-07T14:56:59.447 回答