全部!
我在 LinkedBlockingQueue 中发现了奇怪的代码:
private E dequeue() {
// assert takeLock.isHeldByCurrentThread();
Node<E> h = head;
Node<E> first = h.next;
h.next = h; // help GC
head = first;
E x = first.item;
first.item = null;
return x;
}
谁能解释一下为什么我们需要局部变量 h?它对 GC 有什么帮助?