Me temo que esto es una pregunta realmente estúpida, pero aquí va:) impl clara (en LinkedList de Java
¿Por qué el método claro en la aplicación Lista enlazada por defecto de Java molestia para caminar por la lista y desenganchar todos los nodos? ¿Por qué no simplemente desenganchar el encabezado y dejar conectado el resto de la lista? El GC lo obtendrá de todos modos, ¿no?
Aquí está el método:
/**
* 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++;
}
Por qué caminar? ¿Por qué no pasar a header.next = header.previous = header;
?
Lo mejor que puedo imaginar es que ayuda al GC ...? Este enlace http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442 tipo de sugiere que.
TIA ...
Estaba todo dispuesto a estar en desacuerdo, diciendo que no hay forma de que el código externo obtenga una referencia a LinkedList $ Entry ... pero indirectamente a través de LinkedList $ ListItr, seguro que puede ... ¡Gracias y buena captura! – overthink
¿Qué estaría sosteniendo un nodo? Un iterador o una sublista, pero estos no serían válidos, por lo que no deberían mantenerse. –
@Tom: si no hizo esto, la sublista y el iterador continuarán funcionando, pero el marco de recopilación intenta fallar (pero no lo garantiza). –