I have to find a memory leak in a Java application. I have some experience with this but would like advice on a methodology/strategy for this. Any reference and advice is welcome.
About our situation:
- Heap dumps are larger than 1 GB
- We have heap dumps from 5 occasions.
- We don't have any test case to provoke this. It only happens in the (massive) system test environment after at least a weeks usage.
- The system is built on a internally developed legacy framework with so many design flaws that they are impossible to count them all.
- Nobody understands the framework in depth. It has been transfered to one guy in India who barely keeps up with answering e-mails.
- We have done snapshot heap dumps over time and concluded that there is not a single component increasing over time. It is everything that grows slowly.
- The above points us in the direction that it is the frameworks homegrown ORM system that increases its usage without limits. (This system maps objects to files?! So not really a ORM)
Question: What is the methodology that helped you succeed with hunting down leaks in a enterprise scale application?