dev@glassfish.java.net

Re: Memory leak when deploying/undeploying application through CLI

From: Luís Miranda <luis.miranda_at_fastmail.fm>
Date: Fri, 7 Aug 2009 03:22:37 -0700 (PDT)

Roman Pokhodzhai wrote:
>
> *com.sun.corba.ee.impl.codegen.CurrentClassLoader*
>
> When you deploy an application from command-line, CurrentClassLoader
> stores
> the classloader of our application in its ThreadLocal field, which is
> attached to a httpWorkerThread, and never clears it. HttpWorkerThread runs
> even after the application is undeployed. Thus, we have a reference to our
> EJBClassLoader after the application is undeployed.
>
>
>
> --> com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl_at_0xe210828
> (117
> bytes) <http://localhost:7000/object/0x0e210828> (field threadLocals:)
> --> java.lang.ThreadLocal$ThreadLocalMap_at_0xf76ecf8 (20
> bytes)<http://localhost:7000/object/0x0f76ecf8>(field table:)
> --> [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry;@0x10b31a90 (2056
> bytes)<http://localhost:7000/object/0x10b31a90>(Element 104 of
> [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry;@0x10b31a90
> :)
> --> java.lang.ThreadLocal$ThreadLocalMap$Entry_at_0xf797c58 (28
> bytes)<http://localhost:7000/object/0x0f797c58>(field value:)
> --> com.sun.enterprise.loader.EJBClassLoader_at_0xf8f3420 (88
> bytes)<http://localhost:7000/object/0x0f8f3420>
>
>

Hi Roman,

I am having the same issue. Here is the stack trace:

httpWorkerThread-4848-0_at_16683 daemon, prio=10, in group 'Grizzly', status:
'RUNNING'
          at java.lang.ThreadLocal$ThreadLocalMap.set(ThreadLocal.java:404)
          at java.lang.ThreadLocal$ThreadLocalMap.access$100(ThreadLocal.java:242)
          at java.lang.ThreadLocal.set(ThreadLocal.java:164)
          at
com.sun.corba.ee.impl.codegen.CurrentClassLoader.set(CurrentClassLoader.java:63)
          at com.sun.corba.ee.spi.codegen.Wrapper._setClassLoader(Wrapper.java:993)
          at
com.sun.corba.ee.impl.presentation.rmi.bcel.CodegenProxyCreator.create(CodegenProxyCreator.java:140)
          at
com.sun.corba.ee.impl.presentation.rmi.bcel.StubFactoryBCELImpl.getStubClass(StubFactoryBCELImpl.java:130)
          at
com.sun.corba.ee.impl.presentation.rmi.bcel.StubFactoryBCELImpl.makeStub(StubFactoryBCELImpl.java:152)
          at
com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.internalIORToObject(CDRInputStream_1_0.java:861)
          at
com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_Object(CDRInputStream_1_0.java:816)
          at
com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_Object(CDRInputStream_1_0.java:757)
          at
com.sun.corba.ee.impl.encoding.CDRInputStream.read_Object(CDRInputStream.java:389)
          at org.omg.CORBA.ObjectHelper.read(ObjectHelper.java:59)
          at
org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:245)
          at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:470)
          at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:523)
          at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:501)
          at javax.naming.InitialContext.lookup(InitialContext.java:392)
          at
com.sun.enterprise.naming.factory.IIOPObjectFactory.getObjectInstance(IIOPObjectFactory.java:88)
          at
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
          at
com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:123)
          at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:409)
          at javax.naming.InitialContext.lookup(InitialContext.java:392)
          at
com.sun.enterprise.naming.NamingManagerImpl.unpublishObject(NamingManagerImpl.java:249)
          at com.sun.ejb.containers.BaseContainer.undeploy(BaseContainer.java:3013)
          at
com.sun.ejb.containers.StatelessSessionContainer.undeploy(StatelessSessionContainer.java:744)
          at
com.sun.enterprise.server.AbstractLoader.unloadEjbs(AbstractLoader.java:405)
          at
com.sun.enterprise.server.ApplicationLoader.unload(ApplicationLoader.java:240)
          at
com.sun.enterprise.server.TomcatApplicationLoader.unload(TomcatApplicationLoader.java:213)
          at
com.sun.enterprise.server.ExtendedApplicationLoader.unload(ExtendedApplicationLoader.java:262)
          at
com.sun.enterprise.server.ApplicationManager.applicationUndeployed(ApplicationManager.java:525)
          at
com.sun.enterprise.server.ApplicationManager.applicationUndeployed(ApplicationManager.java:703)
          at
com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:961)
          at
com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:943)
          at
com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:467)
          at
com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182)
          at
com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308)
          at
com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231)
          at
com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStopEvent(ServerDeploymentTarget.java:332)
          at
com.sun.enterprise.deployment.phasing.ApplicationStopPhase.runPhase(ApplicationStopPhase.java:136)
          at
com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
          at
com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966)
          at
com.sun.enterprise.deployment.phasing.PEDeploymentService.stop(PEDeploymentService.java:670)
          at
com.sun.enterprise.deployment.phasing.PEDeploymentService.stop(PEDeploymentService.java:717)
          at
com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.stop(ApplicationsConfigMBean.java:796)
          at
sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
          at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at
com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:381)
          at
com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:364)
          at
com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477)
          at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
          at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
          at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source:-1)
          at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:597)
          at
com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
          at $Proxy1.invoke(Unknown Source:-1)
          at
com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
          at
com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
          at
com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call(InvokeCaller.java:69)
          at
com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle(MBeanServerRequestHandler.java:155)
          at
com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.processRequest(RemoteJmxConnectorServlet.java:122)
          at
com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.doPost(RemoteJmxConnectorServlet.java:193)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
          at
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
          at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
          at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
          at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
          at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
          at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
          at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
          at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
          at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
          at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
          at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
          at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
          at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
          at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
          at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
          at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
          at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
          at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
          at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
          at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
          at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
          at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
          at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
          at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
          at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
          at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
          at
com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run(WorkerThreadImpl.java:116)

I have yet to find the source code for the class though...
-- 
View this message in context: http://www.nabble.com/Memory-leak-when-deploying-undeploying-application-through-CLI-tp21564580p24862342.html
Sent from the java.net - glassfish dev mailing list archive at Nabble.com.