Uma boa maneira de começar é começar a usar o DTrace para Solaris 10
Como posso analisar a utilização de memória de alto intercâmbio do Solaris 10 para processos Java?
Você provavelmente terá que ver o que o coletor de lixo está fazendo. SDN tem um belo artigo técnico sobre isso (e como habilitar a depuração para gc).
Uma boa abordagem prática é descrita aqui . Normalmente, usamos o gcview mencionado para essa tarefa (no Linux, mas o SO não deve importar nesse caso).