Obtenha detecção de deadlock da execução de programm ou dump em Java

Tenho um software java em execução que está congestionado. Gostaria de ter uma visão interna, mas não tenho idéia de como fazer iss

Existe alguma ferramenta que eu possa fornecer um PID e ele me dirá onde cada segmento está localizado atualmente e talvez alguns valores das variáveis também? Estou executando o linux.

Sei mais ou menos o que está causando o problema, mas ainda existem alguns casos possíveis; portanto, seria bom identificá-lo.

Não consigo reproduzir o erro, pois ele aparece apenas a cada poucos dias e nunca apareceu durante a depuração, portanto, é uma mudança única de conhecer o inimigo.

Alguma ideia