Digiaru

Digiaru started this conversation 3 months ago.

0

1

java

Memory Leak: "Lapsed listener" in Observer Pattern

In Java GUI or event-driven code, I register listeners or observers on long-lived objects but never explicitly unregister them. Over time memory usage creeps up, and objects stuck in those listeners aren’t garbage collected. How do I fix this?

Digiaru

Posted 3 months ago

This is the “lapsed listener” problem: an observer remains registered even after it becomes unreachable elsewhere, since the publisher holds a strong reference ([turn0search12]). Fixes: • Always call unsubscribe() or removeListener() when the listener is no longer needed. • Use WeakReference or WeakHashMap for listener storage so that unreferenced observers can be collected. • For frameworks like Swing, ensure calling removeXListener() during component teardown.