[ https://issues.apache.org/jira/browse/OPENJPA-2042?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Albert Lee closed OPENJPA-2042. ------------------------------- Close issue in preparation for 2.2.0 release. > Diagnostics for Application Managed EntityManagerFactory leaks. > --------------------------------------------------------------- > > Key: OPENJPA-2042 > URL: https://issues.apache.org/jira/browse/OPENJPA-2042 > Project: OpenJPA > Issue Type: Improvement > Affects Versions: 1.0.4, 1.2.2, 2.0.1, 2.1.0 > Reporter: Jacob Nowosatka > Assignee: Rick Curtis > Priority: Minor > Fix For: 2.2.0 > > Attachments: OPENJPA-2042.patch, TestEMFMemoryLeak.java > > > EntityManagerFactories can be leaked if they are created with the JSE > bootstrap Persistence class and are never closed, causing an > OutOfMemoryException. > One possibility may be to log a warning or otherwise alert the developer when > the number of unclosed EMF's reaches a certain threshold. An extra step could > be taken here to track where the EMF's are being opened and which ones aren't > being closed as to show the developer exactly where in the code the problem > is occurring. > There may be a possibility to eliminate this leak by making the references to > the EMF's weak and let the garbage collector clean up the unclosed EMF's. > However, in the case that other objects are being leaked as well, this change > may make it harder to detect such leaks. > I ran a simple test that creates a EMF from Persistence. It then creates and > closes an EntityManger. A new EMF is then created without closing the old > one, effectively "leaking" it. As expected, this results in an > OutOfMemoryException. When using weak references on the EMF's, I was able to > get the test to run all night without a trace of any heap growth. However, > this is only a very simple test and a test with more > Entities/Configurations/etc. may result in heap growth due to other objects > being leaked(as mentioned earlier). My test case is attached. > For comparison, I tried the same test on Hibernate and EclipseLink. Hibernate > runs into the same OutOfMemoryException. EclipseLink does not. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira