Rajesh Bahtia <[EMAIL PROTECTED]> writes: > When we have a very large build.xml that has many AnakiaTask tags , the > Anakia throws an Out Of Memory exception.When we profiled to determine the > cause we saw that the velocity engine member variable (ve) in > AnakiaTask.java was been created everytime and it had instances to the DOM > document which resulted in the lots of memory been utilised and ultimately > caused the "Out Of Memory" error. > > My colleague Mitch Christensen (Principal Architecht) has fixed the execute > function to make the variable ready for garbage collection and this has > impoved the performance tremendoulsy.and no longer we the "Out Of Memory" > error. > > I am including the code here and hope that in gets incorporated into the > velocity version 1.3.
Not sure if this was addressed. Are you running with caching turned on? If so, turning it off ought to obviate the need for this patch. Here's a diff showing the changes against CVS HEAD: --- /home/dlr/src/velocity/src/java/org/apache/velocity/anakia/AnakiaTask.java Mon Nov 12 13:38:09 2001 +++ /home/dlr/AnakiaTask.java Tue Apr 2 13:41:38 2002 @@ -94,7 +94,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Jon S. Stevens</a> * @author <a href="mailto:[EMAIL PROTECTED]">Attila Szegedi</a> - * @version $Id: AnakiaTask.java,v 1.33 2001/11/09 00:12:56 geirm Exp $ + * @version $Id: AnakiaTask.java,v 1.1.1.1 2002/03/23 17:45:49 mchriste Exp $ */ public class AnakiaTask extends MatchingTask { @@ -246,6 +246,9 @@ String[] list; String[] dirs; + if(ve == null) + ve = new VelocityEngine() ; + if (baseDir == null) { baseDir = project.resolveFile("."); @@ -332,6 +335,9 @@ { process( baseDir, list[i], destDir, projectDocument ); } + + // allow GC of the Velocity Engine + ve = null ; } /** @@ -391,6 +397,7 @@ context.put ("xpath", new XPathTool() ); context.put ("escape", new Escape() ); context.put ("date", new java.util.Date() ); + context.put ("xmlFilePath", xmlFile ); // only put this into the context if it exists. if (projectDocument != null) @@ -413,9 +420,9 @@ catch (JDOMException e) { if (outFile != null ) outFile.delete(); - if (e.getCause() != null) + if (e.getRootCause() != null) { - Throwable rootCause = e.getCause(); + Throwable rootCause = e.getRootCause(); if (rootCause instanceof SAXParseException) { System.out.println(""); @@ -507,3 +514,4 @@ } } } + -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
