You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by hl...@apache.org on 2004/04/07 17:17:27 UTC
cvs commit: jakarta-hivemind/framework/src/java/org/apache/hivemind/util EventListenerList.java
hlship 2004/04/07 08:17:27
Modified: framework/src/test/hivemind/test/util
TestEventListenerList.java
framework/src/java/org/apache/hivemind/util
EventListenerList.java
Log:
[HIVEMIND-2] EventListenerList leaks memory
Revision Changes Path
1.4 +32 -1 jakarta-hivemind/framework/src/test/hivemind/test/util/TestEventListenerList.java
Index: TestEventListenerList.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/test/hivemind/test/util/TestEventListenerList.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestEventListenerList.java 26 Feb 2004 23:08:04 -0000 1.3
+++ TestEventListenerList.java 7 Apr 2004 15:17:27 -0000 1.4
@@ -16,7 +16,9 @@
import hivemind.test.FrameworkTestCase;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
import org.apache.hivemind.util.EventListenerList;
@@ -192,6 +194,35 @@
}
catch (UnsupportedOperationException ex)
{
+ }
+ }
+
+ public void testOutOfMemoryError()
+ {
+ Trigger ta = buildTriggers(1)[0];
+ EventListenerList l = new EventListenerList();
+ List iterators = new ArrayList();
+
+ try
+ {
+ for (int i = 0; i < 100; i++)
+ {
+ l.addListener(ta);
+
+ iterators.add(l.getListeners());
+
+ l.removeListener(ta);
+
+ }
+
+ }
+ catch (OutOfMemoryError e)
+ {
+ fail("Ran out of memory!");
+ }
+ catch (Throwable e)
+ {
+ fail(e.getMessage());
}
}
}
1.2 +7 -1 jakarta-hivemind/framework/src/java/org/apache/hivemind/util/EventListenerList.java
Index: EventListenerList.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/util/EventListenerList.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EventListenerList.java 26 Feb 2004 23:07:54 -0000 1.1
+++ EventListenerList.java 7 Apr 2004 15:17:27 -0000 1.2
@@ -158,6 +158,12 @@
{
int nominalSize = (size == 0) ? START_SIZE : 2 * size;
+ // Don't grow the array if we don't need to...
+ if (size >= requiredSize)
+ {
+ nominalSize = size;
+ }
+
int newSize = Math.max(requiredSize, nominalSize);
Object[] newListeners = new Object[newSize];
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org