[ 
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)

Reply via email to