Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
8.0.13
-
None
-
I am using apache-tomee-plus-8.0.13 under windows 10 and jdk 8.
Description
I'm seeing a significant memory leak when loading ejb2 bmps remotely. I've found that any ejb2 bmp finder function has a leak on on the client side. The problem eventually causes our client application to crash with an out of memory error.
Below is a simple main function I made to demonstrate. If I run this program below using a single ejb2 findByPrimaryKey call, memory will grow rapidly. I traced it down using the Eclipse Memory Profiler to the org.apache.openejb.client.EJBInvocationHandler class retaining memory in a ConcurrentHashMap field called liveHandleRegistry. I can see "BMPTestHome:1" as the key and a HashSet of WeakReferences as values. Attaching screenshot of the eclipse memory profiler which continues to grow the longer the program runs (memoryleak.png).
package test; import javax.naming.InitialContext; public class LookupMemTest { public static void main(String[] args) throws Exception { System.setProperty("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory"); System.setProperty("java.naming.provider.url", "http://127.0.0.1:8080/tomee/ejb"); InitialContext ctx = new InitialContext(); BMPTestHome bmpTestHome = (BMPTestHome)ctx.lookup("BMPTestHome"); while (!Thread.currentThread().isInterrupted()) { bmpTestHome.findByPrimaryKey(new BMPTestPK(1)); Thread.sleep(5); } } }
Attachments
Attachments
Issue Links
- links to