Hi!
I have tried every possible way that I can think of
in order to reclaim memory from a created node.
Here is a very simple test case illustrating the problem:
<CODE>
import org.w3c.dom.*;
import org.apache.xerces.dom.*;
public class CloneTest3 {
public static void main(String[] args) {
// Make Nodes
for (int i=0; i<=10000; i++) {
new DocumentImpl().createTextNode("");
if ((i%1000) == 0) {
System.gc(); System.runFinalization();
Runtime rt = Runtime.getRuntime();
System.out.println("Memory usage after " + i + " empty text
nodes: " + (rt.totalMemory()-rt.freeMemory()));
}
}
}
}
</CODE>
When executing the memory for the created text nodes are never
reclaimed:
<CODE>
Memory usage after 0 clones: 2018096
Memory usage after 1000 clones: 2267040
Memory usage after 2000 clones: 2515040
Memory usage after 3000 clones: 2763040
Memory usage after 4000 clones: 3011040
Memory usage after 5000 clones: 3259040
Memory usage after 6000 clones: 3507040
Memory usage after 7000 clones: 3755040
Memory usage after 8000 clones: 4003040
Memory usage after 9000 clones: 4251040
Memory usage after 10000 clones: 4499040
</CODE>
Isn't this weird?
How can I reclaim the memory?
Are the nodes statically cached in some class?
Any help on this is very much appreciated. I am entering panic mode here. :)
Thanks,
/Christian Lizell