Browse Source

Avoid hypothetical memory leak by not holding a strong reference to the thread or thread groups used as keys to

report task associations.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278077 13f79535-47bb-0310-9956-ffa450edef68
master
Jesse N. Glick 20 years ago
parent
commit
9c29344dc2
1 changed files with 7 additions and 4 deletions
  1. +7
    -4
      src/main/org/apache/tools/ant/Project.java

+ 7
- 4
src/main/org/apache/tools/ant/Project.java View File

@@ -23,6 +23,7 @@ import java.io.EOFException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.Collections;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Iterator; import java.util.Iterator;
@@ -31,6 +32,8 @@ import java.util.Stack;
import java.util.Vector; import java.util.Vector;
import java.util.Set; import java.util.Set;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map;
import java.util.WeakHashMap;
import org.apache.tools.ant.input.DefaultInputHandler; import org.apache.tools.ant.input.DefaultInputHandler;
import org.apache.tools.ant.input.InputHandler; import org.apache.tools.ant.input.InputHandler;
import org.apache.tools.ant.helper.DefaultExecutor; import org.apache.tools.ant.helper.DefaultExecutor;
@@ -157,11 +160,11 @@ public class Project {
*/ */
private ClassLoader coreLoader = null; private ClassLoader coreLoader = null;


/** Records the latest task to be executed on a thread (Thread to Task). */
private Hashtable threadTasks = new Hashtable();
/** Records the latest task to be executed on a thread. */
private Map/*<Thread,Task>*/ threadTasks = Collections.synchronizedMap(new WeakHashMap());


/** Records the latest task to be executed on a thread Group. */
private Hashtable threadGroupTasks = new Hashtable();
/** Records the latest task to be executed on a thread group. */
private Map/*<ThreadGroup,Task>*/ threadGroupTasks = Collections.synchronizedMap(new WeakHashMap());


/** /**
* Called to handle any input requests. * Called to handle any input requests.


Loading…
Cancel
Save