Hi Scott, The memory leak circumstance was not spotted in Resin 4.0.5 and early 4.0.x versions.
One of the inject path is: * A filter CmsPageFilter dispatch a request to a Jsp page through javax.servlet.RequestDispatcher.forward(request, response) * Jsp page called a BeanMethod custom jsp tag * The jsp tag create a VideoManager through my BeanManager wrapper (MDIObjectFactory) * VideoManager injects a PersonManager * PersonManager injects a PersonController * PersonController injects a DefaultBeanManager and a DefaultBeanReader * DefaultBeanManager and DefaultBeanReader inject a CmsPersistentUnit(@Singleton) * CmsPersistentUnit injects a javax.persistence.EntityManagerFactory (@PersistenceUnit) All those beans except CmsPersistentUnit were dependent scoped (not explicitly annotated) and should be created at its inject point and freed when the parent bean (the jsp page) was destroyed. I list three most frequently bean creation process here. #============handle jsp tag which requires bean creation=================== # this call should be the creation of an @Dependent (thought not explicitly annotated) beans # like com.buysou.cms.managers.DefaultBeanManager or com.buysou.cms.managers.DefaultBeanReader # (for writing/reading database through a @RequestScoped @PersistentContext) com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 118 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 117 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 117 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 117 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 117 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 117 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 114 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 114 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 114 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 114 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 114 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 112 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 112 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 112 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 111 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 111 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 103 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 103 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 103 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 103 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 103 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 89 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 89 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 89 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 88 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 88 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 60 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 60 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 60 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 58 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 58 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 34 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 34 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 34 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 33 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 33 com.caucho.config.inject.InjectManager.getReference(Bean, Type, CreationalContext) 22 # My BeanManager wrapper creating a bean instance by @Named mdi.java.factory.MDIObjectFactory.buildBean(String) 17 com.buysou.cms.jsptags.components.cms.BeanMethod.start(Writer) 13 com.buysou.cms.components.ComponentTagSupport.doStartTag() 13 _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest, HttpServletResponse, PageContextImpl, ServletContext, HttpSession, _video__jsp$TagState) 13 _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest, HttpServletResponse) 13 com.caucho.jsp.JavaPage.service(ServletRequest, ServletResponse) 13 com.caucho.jsp.Page.pageservice(HttpServletRequest, HttpServletResponse) 13 com.caucho.server.dispatch.PageFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.caucho.server.dispatch.ServletInvocation.service(ServletRequest, ServletResponse) 13 com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest, ServletResponse, String, Invocation, DispatcherType) 13 com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest, ServletResponse) 13 com.buysou.cms.pageactions.TemplateForwardResolution.execute(HttpServletRequest, HttpServletResponse) 13 com.buysou.cms.servlet.CmsPageFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 13 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.yinyuetai.servlet.UserMessageFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 13 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.yinyuetai.servlet.UserCredentialFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 13 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.yinyuetai.servlet.SiteInfoFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 13 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.buysou.cms.servlet.WrapRequestResponseFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 13 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.buysou.servlet.filters.encoding.EnhancedEncodingFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 13 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.caucho.server.webapp.WebAppFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.caucho.server.webapp.AccessLogFilterChain.doFilter(ServletRequest, ServletResponse) 13 com.caucho.server.dispatch.ServletInvocation.service(ServletRequest, ServletResponse) 13 #===========handle jsp tag which requires bean creation=================== # this call should be the creation of an @RequestScoped @PersistentContext com.caucho.config.inject.InjectManager$ContextReferenceFactory.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 261 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 254 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 254 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 254 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 254 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 254 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 254 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 254 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 254 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 254 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 254 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 252 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 252 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 252 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 252 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 252 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 247 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 247 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 247 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 245 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 245 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 223 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 223 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 223 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 223 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 223 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 191 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 191 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 191 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 191 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 191 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 132 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 132 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 132 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 125 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 125 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 66 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 66 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 66 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 65 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 65 com.caucho.config.inject.InjectManager.getReference(Bean, Type, CreationalContext) 43 # My BeanManager wrapper creating a bean instance by @Named mdi.java.factory.MDIObjectFactory.buildBean(String) 35 com.buysou.cms.jsptags.components.cms.BeanMethod.start(Writer) 31 com.buysou.cms.components.ComponentTagSupport.doStartTag() 31 _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest, HttpServletResponse, PageContextImpl, ServletContext, HttpSession, _video__jsp$TagState) 18 _jsp._WEB_22dINF._templates._default._video__jsp._jspService(HttpServletRequest, HttpServletResponse) 18 com.caucho.jsp.JavaPage.service(ServletRequest, ServletResponse) 18 com.caucho.jsp.Page.pageservice(HttpServletRequest, HttpServletResponse) 18 com.caucho.server.dispatch.PageFilterChain.doFilter(ServletRequest, ServletResponse) 18 com.caucho.server.dispatch.ServletInvocation.service(ServletRequest, ServletResponse) 18 com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest, ServletResponse, String, Invocation, DispatcherType) 18 com.caucho.server.webapp.RequestDispatcherImpl.forward(ServletRequest, ServletResponse) 18 com.buysou.cms.pageactions.TemplateForwardResolution.execute(HttpServletRequest, HttpServletResponse) 18 com.buysou.cms.servlet.CmsPageFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 18 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 18 com.yinyuetai.servlet.UserMessageFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 18 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 18 com.yinyuetai.servlet.UserCredentialFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 18 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 18 com.yinyuetai.servlet.SiteInfoFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 18 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 18 com.buysou.cms.servlet.WrapRequestResponseFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 18 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 18 #===========handle http page request which create action beans================== # this call should be the creation of an @RequestScoped @PersistentContext too com.caucho.config.inject.InjectManager$ContextReferenceFactory.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 261 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 254 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 254 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 254 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 254 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 254 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 254 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 254 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 254 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 254 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 254 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 252 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 252 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 252 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 252 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 252 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 247 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 247 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 247 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 245 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 245 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 223 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 223 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 223 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 223 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 223 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 191 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 191 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 191 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 191 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 191 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 132 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 132 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 132 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 125 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 125 com.caucho.config.inject.InjectionTargetBuilder$FieldInjectProgram.inject(Object, CreationalContext) 66 com.caucho.config.inject.CandiProducer.inject(Object, CreationalContext) 66 com.caucho.config.inject.InjectionTargetBuilder.inject(Object, CreationalContext) 66 com.caucho.config.inject.ManagedBeanImpl.createDependent(CreationalContext) 65 com.caucho.config.inject.InjectManager$DependentReferenceFactoryImpl.create(CreationalContextImpl, CreationalContextImpl, InjectionPoint) 65 com.caucho.config.inject.InjectManager.getReference(Bean, Type, CreationalContext) 43 # My BeanManager wrapper creating a PageAction instance by classname mdi.java.factory.MDIObjectFactory.buildBean(Class) 8 com.buysou.cms.servlet.CmsPageFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 8 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.yinyuetai.servlet.UserMessageFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 8 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.yinyuetai.servlet.UserCredentialFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 8 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.yinyuetai.servlet.SiteInfoFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 8 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.buysou.cms.servlet.WrapRequestResponseFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 8 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.buysou.servlet.filters.encoding.EnhancedEncodingFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 8 com.caucho.server.dispatch.FilterFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.caucho.server.webapp.WebAppFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.caucho.server.webapp.AccessLogFilterChain.doFilter(ServletRequest, ServletResponse) 8 com.caucho.server.dispatch.ServletInvocation.service(ServletRequest, ServletResponse) 8 com.caucho.server.hmux.HmuxRequest.handleInvocation() 8 com.caucho.server.hmux.HmuxRequest.handleRequestImpl() 8 com.caucho.server.hmux.HmuxRequest.handleRequest() 8 com.caucho.network.listen.TcpSocketLink.dispatchRequest() 8 com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(boolean) 8 com.caucho.network.listen.TcpSocketLink.handleRequests(boolean) 8 Hope these help. -Wesley _______________________________________________ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest