[ http://issues.apache.org/jira/browse/GERONIMO-1062?page=all ]
     
David Jencks closed GERONIMO-1062:
----------------------------------

    Resolution: Fixed
     Assign To: David Jencks

Further examination reveals that the patch for this bug is for a different file 
than 1104.  

Applied:
Checking in src/java/org/openejb/client/CgLibProxyFactory.java;
new revision: 1.6; previous revision: 1.5

> OpenEJB client leaks memory on each JNDI lookup.  Get OutOfMemoryException 
> after a few thousand lookups
> -------------------------------------------------------------------------------------------------------
>
>          Key: GERONIMO-1062
>          URL: http://issues.apache.org/jira/browse/GERONIMO-1062
>      Project: Geronimo
>         Type: Bug
>   Components: OpenEJB
>     Versions: 1.0-M5, 1.0-M4
>  Environment: Windows XP 
> j2sdk1.4.2_08
>     Reporter: John Sisson
>     Assignee: David Jencks
>     Priority: Critical
>      Fix For: 1.0
>  Attachments: AllObjects.zip, CgLibProxyFactory.java.patch, apps.zip
>
> I have a standalone java application that uses OpenEJB's JNDI implementation 
> (org.openejb.client.RemoteInitialContextFactory ).  It appears that each JNDI 
> lookup of an EJB is leaking memory and it looks like it is related to cglib.
> I have attached to this JIRA a simple EJB and standalone java client 
> application that can be used to reproduce the problem.
> Extract the zip file to the geronimo\sandbox directory
> cd sandbox\echoTest
> maven -o
> deploy the echoTest.ear file in the sandbox\echoTest\target directory
> cd sandbox\echoTestStandaloneClient
> maven -o
> cd target
> java -jar echoTestStandaloneClient-0.1-SNAPSHOT.jar
> The console will be updated with the number of lookups performed.  E.G here 
> are a few examples with different JVM settings:
> C:\OpenSourceJava\geronimo\trunk\sandbox\echoTestStandaloneClient>set 
> JAVA_HOME=C:\Program Files\Java\j2sdk1.4.2_08
> C:\OpenSourceJava\geronimo\trunk\sandbox\echoTestStandaloneClient>"%JAVA_HOME%"\bin\java.exe
>  -jar target\echoTestStandaloneClient-0.
> 1-SNAPSHOT.jar
> After 0 lookups: delta: 1,911,024, free: 1,911,024, used: 120,592, total: 
> 2,031,616, max: 66,650,112
> After 1000 lookups: delta: 417,040, free: 2,328,064, used: 2,603,520, total: 
> 4,931,584, max: 66,650,112
> After 2000 lookups: delta: 1,765,304, free: 4,093,368, used: 5,151,304, 
> total: 9,244,672, max: 66,650,112
> After 3000 lookups: delta: 1,759,288, free: 5,852,656, used: 7,303,696, 
> total: 13,156,352, max: 66,650,112
> After 4000 lookups: delta: 2,182,664, free: 8,035,320, used: 10,081,288, 
> total: 18,116,608, max: 66,650,112
> After 5000 lookups: delta: 1,579,184, free: 9,614,504, used: 11,574,104, 
> total: 21,188,608, max: 66,650,112
>  Lookups performed: 5432
> Exception in thread "main" net.sf.cglib.core.CodeGenerationException: 
> java.lang.reflect.InvocationTargetExce
> ption-->null
>         at 
> net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:237)
>         at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
>         at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:304)
>         at 
> org.openejb.client.CgLibProxyFactory.newProxyInstance(CgLibProxyFactory.java:92)
>         at 
> org.openejb.client.CgLibProxyFactory.newProxyInstance(CgLibProxyFactory.java:81)
>         at 
> org.openejb.client.ProxyManager.newProxyInstance(ProxyManager.java:90)
>         at 
> org.openejb.client.EJBHomeHandler.createEJBHomeProxy(EJBHomeHandler.java:106)
>         at 
> org.openejb.client.JNDIContext.createEJBHomeProxy(JNDIContext.java:212)
>         at org.openejb.client.JNDIContext.lookup(JNDIContext.java:245)
>         at javax.naming.InitialContext.lookup(InitialContext.java:347)
>         at 
> org.acme.EchoTestStandaloneClient.testLookup(EchoTestStandaloneClient.java:87)
>         at 
> org.acme.EchoTestStandaloneClient.main(EchoTestStandaloneClient.java:76)
> Caused by: java.lang.reflect.InvocationTargetException
>         at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:324)
>         at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:384)
>         at 
> net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
>         ... 11 more
> Caused by: java.lang.OutOfMemoryError
> If I try this on JDK 1.5.0_05, it is worse as the JVM becomes unresponsive 
> and uses a lot of CPU and I have to kill the JVM:
> C:\OpenSourceJava\geronimo\trunk\sandbox\echoTestStandaloneClient>java -jar 
> target\echoTestStandaloneClient-0.1-SNAPSHOT.jar
> After 0 lookups: delta: 1,863,336, free: 1,863,336, used: 168,280, total: 
> 2,031,616, max: 66,650,112
> After 1000 lookups: delta: 482,408, free: 2,345,744, used: 2,684,144, total: 
> 5,029,888, max: 66,650,112
> After 2000 lookups: delta: 1,865,064, free: 4,210,808, used: 5,267,336, 
> total: 9,478,144, max: 66,650,112
> After 3000 lookups: delta: 2,116,488, free: 6,327,296, used: 7,967,744, 
> total: 14,295,040, max: 66,650,112
> After 4000 lookups: delta: 2,007,008, free: 8,334,304, used: 10,499,104, 
> total: 18,833,408, max: 66,650,112
> After 5000 lookups: delta: 2,094,096, free: 10,428,400, used: 13,164,560, 
> total: 23,592,960, max: 66,650,112
>  Lookups performed: 5099

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to