By avoiding spurious pointers to h.next keeping the ’next’ item alive longer than necessary.
Rgds Damon > On 21 Jun 2020, at 12:59, Robert Lu <[email protected]> wrote: > > Hi, > On java.util.concurrent.LinkedBlockingQueue#dequeue > https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java#L217 > > <https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/concurrent/LinkedBlockingQueue.java#L217> > : > > private E dequeue() { > // assert takeLock.isHeldByCurrentThread(); > // assert head.item == null; > 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; > } > > Why does h.next = h help GC? > > -- > Robert Lu <[email protected] <mailto:[email protected]>> > About me: https://www.robberphex.com/about-me > <https://www.robberphex.com/about-me> > > _______________________________________________ > hotspot-gc-use mailing list > [email protected] > https://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
_______________________________________________ hotspot-gc-use mailing list [email protected] https://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
