Hola:
Simplemente esto:
Código:
public class MiDialogo extends JDialog
{
protected void finalize()
{
System.out.println ("Se libera JDialog");
}
}
// En algún sitio
MiDialogo dialogo = new MiDialogo();
// cuando quieras liberarlo
dialogo.dispose();
dialogo=null;
Si el recolector de basura realmente libera el dialogo, se debería escribir en pantalla "se libera JDialog". Si no lo ves, es que no lo ha liberado y se queda consumiendo memoria. Debes revisar si te quedan referencias al dialogo en algún sitio, desuscribirlo de sitios posibles donde lo hayas suscrito, etc.
De todas formas, esto sólo si haces new MiDialogo() con frecuencia (por ejemplo, cada vez que se apriete determinado botón). Si sólo haces un par de new no merece la pena revisarlo.
E insisto, si quieres algo más serio, usa el JProfiler, el jmp o el JConsole. Esto te dará una idea rápida de qué clases no se liberan (si es que las hay) y no tendrás que andar dando palos de ciego a ver qué clase no se libera.
Se bueno.