Author: toad Date: 2007-03-21 23:10:38 +0000 (Wed, 21 Mar 2007) New Revision: 12262
Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java Log: Use weak references Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java =================================================================== --- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java 2007-03-21 23:08:19 UTC (rev 12261) +++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java 2007-03-21 23:10:38 UTC (rev 12262) @@ -3,6 +3,7 @@ * http://www.gnu.org/ for further details of the GPL. */ package freenet.client.async; +import java.lang.ref.WeakReference; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; @@ -81,7 +82,7 @@ private final RequestStarter starter; private final Node node; public final String name; - private final LinkedList /* <RandomGrabArray> */ recentSuccesses = new LinkedList(); + private final LinkedList /* <WeakReference <RandomGrabArray> > */ recentSuccesses = new LinkedList(); public static final String PRIORITY_NONE = "NONE"; public static final String PRIORITY_SOFT = "SOFT"; @@ -334,7 +335,8 @@ synchronized(this) { if(!recentSuccesses.isEmpty()) { if(random.nextBoolean()) { - altRGA = (RandomGrabArray) recentSuccesses.removeLast(); + WeakReference ref = (WeakReference) (recentSuccesses.removeLast()); + altRGA = (RandomGrabArray) ref.get(); } } } @@ -400,7 +402,7 @@ public void succeeded(RandomGrabArray parentGrabArray) { synchronized(this) { - recentSuccesses.addFirst(parentGrabArray); + recentSuccesses.addFirst(new WeakReference(parentGrabArray)); while(recentSuccesses.size() > 8) recentSuccesses.removeLast(); }
