[ https://issues.apache.org/jira/browse/OPENJPA-2814?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17248647#comment-17248647 ]
Mark Struberg commented on OPENJPA-2814: ---------------------------------------- the seasar.org was for a IBM dependency. I fixed that in OPENJPA-2843 > Memory Leak in ForeignKey class > ------------------------------- > > Key: OPENJPA-2814 > URL: https://issues.apache.org/jira/browse/OPENJPA-2814 > Project: OpenJPA > Issue Type: Bug > Components: jdbc > Affects Versions: 3.0.0 > Reporter: Gregory JEVARDAT > Priority: Major > > I analyzed and solved a memory leak in the ForeignKey class. > > Context is that I run a batch application running as a service and reading > billions of entities. > I realised that ForeignKey classes were accumulating in the heap after each > query reading these entities and were never garbaged leading after few > hundreds of millions of read and hours of processing to full heap. > After profiling and debugging the leak is coming from the > ForeignKey.join(Column local,Column toPOK) method, more precisely in the line > 574 were > local.addConstraint(this) is performed. > Here the ForeignKeys are added to a Set in the Column class. > Issue is that the ForeignKey has no equals and hashcode implemented resulting > in what it seems to me logically equivalent ForeignKeys added and > accumulating indefinitely in the map of Columns. Indeed, for whatever reason > a new ForeignKey class is created each time (which also sounds weird) at > RelationFieldStrategy.createTranslatingForeignKey method > Solution: after implementing equals and hashcode in ForeignKey and Constraint > class, the application works smoothly and the memory leak is gone. Maybe it > should be done for DBIdentifier also ? > > -- This message was sent by Atlassian Jira (v8.3.4#803005)