Yes the practice is to remove change listeners any time the underlying data has been removed. So the practice is to call
.stop() on the notification token or
removeChangeListener() as shown here:
The memory footprint for a listener is small so I don't think this would be your largest source of leakage.