Como fazer o perfil de memória em Java?

Ainda estou a aprender as cordas de Java. desculpa se há uma resposta óbvia para isto. Eu tenho um programa que está tom ... u quero saber qual o objecto está a referir-se para que eu possa trabalhar para que o seu tamanho seja mais optimizado.