Non ho mai provato a farlo, ma si dovrebbe riuscire (naturalmente richiamando un bel super.finalize(); )... considera che il metodo non viene richiamato in maniera deterministica ma solo quando inizia a frullare il gc...
A questo punto ho qualche dubbio sul fatto che il gc venga richiamato nel momento in cui viene terminato il programma (d'altra parte viene rilasciata tutta la memoria assegnata a quel processo)....
quindi prova a richiamarlo tu (mi pare con Runtime.gc(); oppure con RunTime.runFinalization()
Facci sapere che sono curioso...