[ 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