[
https://issues.apache.org/jira/browse/TOMEE-4120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Richard Zowalla reassigned TOMEE-4120:
--------------------------------------
Assignee: Thomas Lien
> Remote EJB2 BMP Memory Leak
> ---------------------------
>
> Key: TOMEE-4120
> URL: https://issues.apache.org/jira/browse/TOMEE-4120
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Core Server
> Affects Versions: 8.0.13
> Environment: I am using apache-tomee-plus-8.0.13 under windows 10 and
> jdk 8.
> Reporter: Thomas Lien
> Assignee: Thomas Lien
> Priority: Critical
> Fix For: 8.0.14
>
> Attachments: mem1.png, mem2.png, mem3.png, memoryleak.png,
> test.ear.zip, testjar-src.zip
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> 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).
> {code:java}
> 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);
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)