LinkedBlockingQueue源码疑问

2021-01-06 21:01发布

问题:

Node<E> h = head;
Node<E> first = h.next;
h.next = h; // help GC

在好多涉及到链表的源码中都看到了h.next = h这行代码,这行代码究竟是如何帮助GC的,求大神帮忙解答!

回答1:

为了减少浮动垃圾的产生
https://stackoverflow.com/questions/10106191/openjdks-linkedblockingqueue-implementation-node-class-and-gc
像在CMS收集器中无法处理浮动垃圾,只能等下一次gc时处理,浮动垃圾可能会导致二次full gc《深入理解java虚拟机》第二版的CMS收集器可以看到



回答2:

继续下一个节点



标签: java