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

LinkedBlockingQueue Nodes should unlink themselves before becoming garbage

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 6u11, 6u22, 7
    • Fix Version/s: 7
    • Component/s: core-libs
    • Labels:
      None
    • Subcomponent:
    • Resolved In Build:
      b70
    • CPU:
      generic, x86
    • OS:
      generic, linux, windows_vista
    • Verification:
      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

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

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Imported:
                    Indexed: