DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14778>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=14778 "Memory Leak" in XalanJ2 Summary: "Memory Leak" in XalanJ2 Product: XalanJ2 Version: 2.0.0 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Blocker Priority: Other Component: org.apache.xalan.xsltc AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] We are facing a memory leak problem while doing transformation using xalan java version 2. We are using templates which are cached on the server disk for the transformation. Here is the sample code that we are using. To create a template: public Templates getTemplate(String p_strXslUri) throws Exception { TransformerFactory tFactory = TransformerFactory.newInstance(); StreamSource stylesource = new StreamSource(p_strXslUri); return tFactory.newTemplates(stylesource); } For debugging we printed out the instance of tFactory and it is : org.apache.xalan.xsltc.trax.TransformerFactoryImpl After this, template is put in the disk cache and used for further transformation. This is the method that we use for the transformation: public static String transformUsingTemplates(Templates template, String xmlFile) throws TransformerException, TransformerConfigurationException, FileNotFoundException, IOException, Exception { StringWriter sos = new StringWriter(); StreamResult streamresult = new StreamResult(sos); try { Transformer transformer = template.newTransformer(); StreamSource XMLsource = new StreamSource(new StringReader (xmlFile)); transformer.transform(XMLsource, streamresult); return (sos.toString()); } catch (Exception e) { throw e; } } We tried to do a load test of the application running 25 concurrent user for one hour. It ran well for a while, but memory usage kept increasing and after some time the server stopped responding. We ran a profiler to find out the bottle neck and this is the result we got. XSLUtility.transformUsingTemplates() Execution Count : 4,880 Temporary Bytes : 1,569,938,728 Bytes Temporary Objects : 4,055,784 Short-lived Bytes : 1,569,938,728 Bytes Short-lived Objects : 4,055,784 Medium-lived Bytes : 0 Bytes Medium-lived Objects : 0 Long-lived Bytes : 888,751,648 Bytes Long-lived Objects : 653,812 It’s the long lived bytes and objects that are eating up the memory. (total 15 templates were created in the whole process) We are using WAS 4.0.1 AE on Win2k. Details of the jar file we are using (filename / size/ modified) : Xalan.jar 886kb 2/20/2002 6:25pm Xercesimpl.jar 1689kb 3/7/2002 10:21pm Xml-apis.jar 106kb 2/19/2002 4:31pm Xmlparserapis.jar 129kb 3/7/2002 10:21pm Please let us know if there is something wrong in what we are doing or there is a memory leak in the transformer implementation in xalan-J2? And what is the resolution for this problem?