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

Reply via email to