How could self link help GC?
Robert Lu
robberphex at gmail.com
Mon Jun 22 03:40:08 UTC 2020
Hi, Damon.
But once dequeued, old node is dead object. The pointer(h.next) from dead
object to alive/dead object makes no difference to GC.
So I thinks h.next=h is meaningless.
And, why isn't it h.next=null ?
On Mon, Jun 22, 2020 at 12:18 AM Damon Hart-Davis <dhd at exnet.com> wrote:
> 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 <robberphex at gmail.com> 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
> :
>
> 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 <robberphex at gmail.com>
> About me: https://www.robberphex.com/about-me
>
> _______________________________________________
> hotspot-gc-use mailing list
> hotspot-gc-use at openjdk.java.net
> https://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>
>
>
--
Robert Lu <robberphex at gmail.com>
About me: https://www.robberphex.com/about-me
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20200622/fe8d4b47/attachment.htm>
More information about the hotspot-gc-use
mailing list