Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6805775

LinkedBlockingQueue Nodes should unlink themselves before becoming garbage

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • P3
    • Resolution: Fixed
    • 6u11, 6u22, 7
    • 7
    • core-libs
    • None
    • b70
    • generic, x86
    • generic, linux, windows_vista
    • Verified

    Backports

      Description

        LinkedBlockingQueue Nodes should unlink themselves before becoming garbage,
        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;

        Attachments

          Issue Links

            Activity

              People

                chegar Chris Hegarty
                dholmes David Holmes
                Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: