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) {