Author: toad
Date: 2006-08-03 19:37:24 +0000 (Thu, 03 Aug 2006)
New Revision: 9871

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
Log:
Reduce memory usage on serializing in a fraction.

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-08-03 19:18:08 UTC (rev 9870)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-08-03 19:37:24 UTC (rev 9871)
@@ -115,7 +115,8 @@
                        checkURIs = new FreenetURI[checkBlockCount];
                        checkBlockInserters = new 
SingleBlockInserter[checkBlockCount];
                        for(int i=0;i<checkBlockCount;i++) {
-                               SimpleFieldSet blockFS = 
checkFS.subset(Integer.toString(i));
+                               String index = Integer.toString(i);
+                               SimpleFieldSet blockFS = checkFS.subset(index);
                                if(blockFS == null) {
                                        hasURIs = false;
                                        encoded = false;
@@ -154,6 +155,7 @@
                                if(checkBlocks[i] == null && checkURIs[i] == 
null) {
                                        encoded = false;
                                }
+                               checkFS.removeSubset(index);
                        }
                        splitfileAlgo = FECCodec.getCodec(splitfileAlgorithm, 
dataBlockCount, checkBlocks.length);
                } else {
@@ -167,7 +169,8 @@
                }

                for(int i=0;i<dataBlockCount;i++) {
-                       SimpleFieldSet blockFS = 
dataFS.subset(Integer.toString(i));
+                       String index = Integer.toString(i);
+                       SimpleFieldSet blockFS = dataFS.subset(index);
                        if(blockFS == null) throw new ResumeException("No data 
block "+i+" on segment "+segNo);
                        tmp = blockFS.get("URI");
                        if(tmp != null) {
@@ -203,6 +206,7 @@
                                        throw new ResumeException("Block "+i+" 
of "+segNo+" could not serialize data (create returned null) from "+bucketFS);
                                // Don't create fetcher yet; that happens in 
start()
                        }
+                       dataFS.removeSubset(index);
                }

                if(!encoded) {


Reply via email to