Wenn man Code beim Beenden der VM ausführen möchte, so hat man die Möglichkeit einen oder mehrere Thread(s) zu definieren und anzumelden. Dieser/diese wird dann beim Beenden ausgeführt wird.
Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { System.out.println("Die VM wird gerade beendet!"); } });