Detección cuando una aplicación Java se cierra

Intento detectar cuándo la aplicación Java está a punto de cerrarse para poder realizar métodos para liberar recursos, lo hice en C # de la siguiente manera:

//Intercept when the application closes
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Reclaim resources from MIDI usage
            if (MIDIControl.CleanUp())
            {
                Logger.Add("Closed resources successfully on Form Close \n");
            }
            else
            {
                Logger.Add("Failed to close all resources on Form Close.");
            }
        }

He intentado realizar la misma técnica en la versión de Java, pero parece que no funciona, he intentado depurar y no se suspende en el punto de interrupción colocado en el nombre del método:

//Intercept when the application closes
        public void windowClosing(WindowEvent we)
        {
            //Reclaim resources from MIDI usage
            if(_midiInstance.CleanUp())
            {
                Logger.Add("Closed resources successfully on ShutDown");
            }
            else
            {
                Logger.Add("Failed to close all resources on ShutDown");
            }
            System.exit(0);
        }

¿Estoy esperando el evento equivocado? ¿Cómo haría para llevar a cabo el método apropiado de la misma manera que la versión C #.

Gracias por tu tiempo

Respuestas a la pregunta(1)

Su respuesta a la pregunta