Bug 96868 - Memory cleanup for Ant support
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/DecayCodeCompletionDataStructuresThread.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/DecayCodeCompletionDataStructuresThread.java
index 6404de8..b5a7dc8 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/DecayCodeCompletionDataStructuresThread.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/DecayCodeCompletionDataStructuresThread.java
@@ -11,6 +11,8 @@
package org.eclipse.ant.internal.ui.editor;
+import org.eclipse.ant.internal.ui.editor.utils.ProjectHelper;
+
public class DecayCodeCompletionDataStructuresThread extends Thread {
@@ -34,12 +36,13 @@
setPriority(Thread.MIN_PRIORITY);
setDaemon(true);
fgInstance= this;
+ setContextClassLoader(null); //don't hold on to any class loaders
}
/**
* The background activity that is triggered when the last <code>AntModel</code> is disposed.
* Waits for the required delay and then nulls out the memory expensive Ant code
- * completion data structures.
+ * completion data structures and reset the ProjectHelper.
* If an <code>AntModel</code> is created during the wait, the thread is
* interrupted and no nulling out occurs.
*/
@@ -48,6 +51,7 @@
try {
wait(fgDelay);
AntEditorCompletionProcessor.resetCodeCompletionDataStructures();
+ ProjectHelper.reset();
} catch (InterruptedException x) {
}
}
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java
index 4d8638b..3f683ae 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java
@@ -238,6 +238,7 @@
public void reset() {
task= null;
currentTask= null;
+ fNormalizedFileNames.clear();
}
}
@@ -635,6 +636,7 @@
public static void reset() {
fgXMLReader= null;
+ fu= null;
}
public static void setAntModel(IAntModel antModel) {