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}. */

Reply via email to