AVRO-2050: Clear Array To Allow GC
Project: http://git-wip-us.apache.org/repos/asf/avro/repo Commit: http://git-wip-us.apache.org/repos/asf/avro/commit/d0cce252 Tree: http://git-wip-us.apache.org/repos/asf/avro/tree/d0cce252 Diff: http://git-wip-us.apache.org/repos/asf/avro/diff/d0cce252 Branch: refs/heads/master Commit: d0cce25208ad83a9fb6fcce825ae64881bdda420 Parents: 224f75f Author: BELUGA BEHR <[email protected]> Authored: Thu Jul 27 09:56:06 2017 +0200 Committer: Gabor Szadovszky <[email protected]> Committed: Thu Jul 27 10:17:49 2017 +0200 ---------------------------------------------------------------------- CHANGES.txt | 3 +++ .../org/apache/avro/generic/GenericData.java | 28 ++++---------------- 2 files changed, 8 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/avro/blob/d0cce252/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 661e565..61c248f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -64,6 +64,9 @@ Trunk (not yet released) AVRO-2054: Use StringBuilder instead of StringBuffer (Beluga Behr via gabor) + AVRO-2050: Clear Array To Allow GC + (Beluga Behr via gabor) + BUG FIXES AVRO-1741: Python3: Fix error when codec is not in the header. http://git-wip-us.apache.org/repos/asf/avro/blob/d0cce252/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java ---------------------------------------------------------------------- diff --git a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java index 96f5ad5..9a51e40 100644 --- a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java +++ b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java @@ -257,7 +257,11 @@ public class GenericData { @Override public Schema getSchema() { return schema; } @Override public int size() { return size; } - @Override public void clear() { size = 0; } + @Override public void clear() { + // Let GC do its work + Arrays.fill(elements, 0, size, null); + size = 0; + } @Override public Iterator<T> iterator() { return new Iterator<T>() { private int position = 0; @@ -274,15 +278,6 @@ public class GenericData { throw new IndexOutOfBoundsException("Index " + i + " out of bounds."); return (T)elements[i]; } - @Override public boolean add(T o) { - if (size == elements.length) { - Object[] newElements = new Object[(size * 3)/2 + 1]; - System.arraycopy(elements, 0, newElements, 0, size); - elements = newElements; - } - elements[size++] = o; - return true; - } @Override public void add(int location, T o) { if (location > size || location < 0) { throw new IndexOutOfBoundsException("Index " + location + " out of bounds."); @@ -334,19 +329,6 @@ public class GenericData { right--; } } - @Override - public String toString() { - StringBuilder buffer = new StringBuilder(); - buffer.append("["); - int count = 0; - for (T e : this) { - buffer.append(e==null ? "null" : e.toString()); - if (++count < size()) - buffer.append(", "); - } - buffer.append("]"); - return buffer.toString(); - } } /** Default implementation of {@link GenericFixed}. */
