Java profiler - Problemas com memória

Bom dia pessoal.

Temos um sistema(EJB, Groovy e JPA) que roda em produção e cerca de 1x por semana temos problemas de OutOfMemoryError, mas não sabemos exatamente onde.
Quando isso acontece, reiniciamos o JBoss e tudo volta a funcionar.

Qual é a melhor maneira de achar onde está o problema ? É um sistema BEM antigo, roda em Java 7 com JBoss EAP 6.1 ainda.
Recomendam algum profiler ou alguma outra ferramenta que possa ajudar ?

Abraços,

Pelo menos quando dava esse problema onde eu trabalho, verificamos que o problema era causada por uma aplicação antiga já que estava com uma thread mal feita que não estava sendo fechada.