Browse Source

TemporaryBuffer: Clear block pointer list instead of reallocating

The block pointer list may have been relatively large, so no need to
make more garbage. Instead, just clear the list and null out all the
elements.

Another possible motivation: a caller may have provided an inaccurate
estimated size, so the list might have been resized several times. If
the list is reused later for a similarly underestimated workload, this
fix will prevent additional resizing on subsequent usages.

Change-Id: I511675035dcff1117381a46c294cc11aded10893
stable-4.0
Dave Borowitz 10 years ago
parent
commit
e3e9e1f003
  1. 10
      org.eclipse.jgit/src/org/eclipse/jgit/util/TemporaryBuffer.java

10
org.eclipse.jgit/src/org/eclipse/jgit/util/TemporaryBuffer.java

@ -291,13 +291,11 @@ public abstract class TemporaryBuffer extends OutputStream {
if (overflow != null) { if (overflow != null) {
destroy(); destroy();
} }
if (inCoreLimit < Block.SZ) { if (blocks != null)
blocks = new ArrayList<Block>(1); blocks.clear();
blocks.add(new Block(inCoreLimit)); else
} else {
blocks = new ArrayList<Block>(initialBlocks); blocks = new ArrayList<Block>(initialBlocks);
blocks.add(new Block()); blocks.add(new Block(Math.min(inCoreLimit, Block.SZ)));
}
} }
/** /**

Loading…
Cancel
Save