En java no existe el concepto de destructores. El manera de la memoria es totalmente dinamico y el garbage collector elimina las variables de memoria cuando estan fuera de ambito y lo hace cuando lo considere necesario porque no hay manera de ejecutarlo desde un programa.
Lo maximo que puedes hacer es "marcar" la variable como null para que el gc (garbage collector) libere la memoria asociada al objeto(Eso si y te repito cuando el lo considere necesario).
Un pequeño detalle para las ventanas. Para que la ventana se libere de memoria, además de poner a null cualquier variable que "apunte" a dicha ventana, previamente se debe llamar a su método dispose().