Lapsed listener problem
It originates in the observer pattern, where observers (or listeners) are registering with a publisher to receive events. The leak happens when a listener forgets to unsubscribe from the publisher when it does not need to listen anymore. Consequently, the publisher still holds a reference to the observer which prevents it from being garbage collected — including all other objects it is referring to — for as long as the publisher is alive, which could be until the end of the application.
This causes not only a memory leak, but also a performance degradation with an "uninterested" observer receiving and acting on unwanted events.
- What is the lapsed listener problem?, Andy McMullan