将为Java LinkedList分配多少空间?

时间:2012-11-26 02:29:46

标签: java linked-list

我正在阅读Java LinkedList的源代码,请注意LinkedList的构造函数是这样的:

public LinkedList() {
    header.next = header.previous = header;
}

将为此初始化分配多少空间,标题似乎通过指向自身来创建无限递归。

2 个答案:

答案 0 :(得分:4)

它在header实例变量的初始化中分配单个节点:

private transient Entry<E> header = new Entry<E>(null, null, null);

您引用的构造函数中的代码不分配内存;它只是设置指向初始状态的指针。没有“无限递归”,因为内部遍历迎合了这种情况。

答案 1 :(得分:0)

我不是100%肯定你的意思是“多少空间”,但如果你的意思是在内存中分配多少空间 - 它最初只是一个字段。即使标头指针指向自身,所有指针仍然只指向内存中的单个地址空间。请注意,我甚至不确定它最初会指向任何地方,我认为它们最初只会被指定为空值。

一个简单的例子。

String a = "Hello"
String b = a;
String c = b;

字符串“Hello”只会在内存中出现一次,即使它有多个指针也是如此。