我担心这是一个非常愚蠢的问题,但这里有:
为什么 Java 默认 LinkedList 实现中的 clear 方法会费心遍历列表并解开所有节点?为什么不直接解开标题并让列表的其余部分保持连接 - GC 无论如何都会得到它,不是吗?
这是方法:
/**
* Removes all of the elements from this list.
*/
public void clear() {
Entry<E> e = header.next;
while (e != header) {
Entry<E> next = e.next;
e.next = e.previous = null;
e.element = null;
e = next;
}
header.next = header.previous = header;
size = 0;
modCount++;
}
为什么走路呢?为什么不直接跳到header.next = header.previous = header;
?
我能想到的最好的结果是它对 GC 有帮助吗……?这个链接http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442有点暗示。
蒂亚...