I have a web app running under tomcat-6.0.26 with 
JreMemoryLeakPreventionListener, java jdk1.6.0_18.

Using jmap -histo pid, I can watch 
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl, etc increase in number
after running my unmarshal action, followed by undeploy and redeploy.  Find 
Leaks in the manager also finds leaks.

The JAXBContext instance is created with a singleton that is an enum (using 
Josh Block's pattern):

public enum JAXBContextMascot {
        INSTANCE("com.matrixscience.xmlns.schema.mascot_search_results_2" );
        private JAXBContext ctx;
        JAXBContextMascot(String contextPath) {
                try {
                        ctx =JAXBContext.newInstance(clazz);
                } catch (JAXBException e) {
                        throw new RuntimeException(e);
                }
        }
        public Unmarshaller createUnmarshaller(){
                try {
                        return ctx.createUnmarshaller();
                } catch (JAXBException e) {
                        throw new RuntimeException(e);
                }
        }
}

Am I doing something wrong which is causing the memory leak?
JAXBContext.newInstance() can take a ClassLoader argument.  Is there some 
ClassLoader I should be using that will get around this?

Any help would be appreciated.
mas


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to