Author: toad
Date: 2008-02-02 14:06:35 +0000 (Sat, 02 Feb 2008)
New Revision: 17467

Modified:
   trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
Log:
SingleFileFetcher: Clear metadata so it can be GC'ed when fetching splitfiles 
and when fetching multi-level metadata.

Modified: trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileFetcher.java       
2008-02-01 23:06:25 UTC (rev 17466)
+++ trunk/freenet/src/freenet/client/async/SingleFileFetcher.java       
2008-02-02 14:06:35 UTC (rev 17467)
@@ -375,6 +375,8 @@
                                // Fetch on a second SingleFileFetcher, like 
with archives.
                                metadata.setSimpleRedirect();
                                final SingleFileFetcher f = new 
SingleFileFetcher(this, metadata, new MultiLevelMetadataCallback(), ctx);
+                               // Clear our own metadata so it can be garbage 
collected, it will be replaced by whatever is fetched.
+                               this.metadata = null;
                                ctx.ticker.queueTimedJob(new Runnable() {
                                        public void run() {
                                                f.wrapHandleMetadata(true);
@@ -508,6 +510,10 @@
                                parent.onTransition(this, sf);
                                sf.scheduleOffThread();
                                rcb.onBlockSetFinished(this);
+                               // Clear our own metadata, we won't need it any 
more.
+                               // For multi-level metadata etc see above.
+                               metadata = null; 
+                               
                                // SplitFile will now run.
                                // Then it will return data to rcd.
                                // We are now out of the loop. Yay!


Reply via email to