-
Bug
-
Resolution: Fixed
-
P3
-
6u11, 6u22, 7
-
None
-
b70
-
generic, x86
-
generic, linux, windows_vista
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2186685 | 6u19 | Karunakar Gajjala | P3 | Resolved | Fixed | b01 |
JDK-2189204 | 6u18-rev | Karunakar Gajjala | P3 | Resolved | Fixed | b09 |
JDK-2179948 | 6u17-rev | Karunakar Gajjala | P3 | Closed | Fixed | b06 |
to prevent tenured Nodes from causing full GCs by retaining a reference to
all younger Nodes in the same queue.
For details and in-depth discussion, see:
http://thread.gmane.org/gmane.comp.java.jsr.166-concurrency/5758
Here's the fix, that has been shown to produce factor of 4 improvement in
a synthetic microbenchmark.
--- src/main/java/util/concurrent/LinkedBlockingQueue.java 18 May 2008
23:47:56 -0000 1.49
+++ src/main/java/util/concurrent/LinkedBlockingQueue.java 12 Feb 2009
01:00:43 -0000 1.50
@@ -133,7 +133,9 @@
* @return the node
*/
private E extract() {
- Node<E> first = head.next;
+ Node<E> h = head;
+ Node<E> first = h.next;
+ h.next = null; // help GC
head = first;
E x = first.item;
first.item = null;
- backported by
-
JDK-2186685 LinkedBlockingQueue Nodes should unlink themselves before becoming garbage
- Resolved
-
JDK-2189204 LinkedBlockingQueue Nodes should unlink themselves before becoming garbage
- Resolved
-
JDK-2179948 LinkedBlockingQueue Nodes should unlink themselves before becoming garbage
- Closed
- duplicates
-
JDK-6806875 Young memory "leak" in LinkedBlockingQueue
- Closed
-
JDK-7002969 Executors returns ExecutorService which
- Closed
- relates to
-
JDK-6871697 LinkedBlockingQueue Iterator/remove/poll race
- Resolved
-
JDK-6993789 LinkedBlockingDeque iterator/descendingIterator loops and owns lock forever
- Closed