junior
Как отписаться от потока для предотвращения утечки памяти?
Отписка от реактивного потока выполняется через вызов dispose() на объекте Disposable, полученном из подписки, или через автоматические операторы ограничения потока.
Способы отписки
- Disposable — получить Disposable из подписки и вызвать
dispose()для отмены - BaseSubscriber — наследоваться от BaseSubscriber и вызвать
dispose() - Операторы при создании потока:
take(n)— автоматически отменяет подписку после получения n элементовtimeout(Duration)— автоматически отменяет подписку при истечении времени ожидания
Best Practice
Настраивайте отмену подписки, связывая её с жизненным циклом компонента (например, @PreDestroy в Spring).
На собеседовании: интервьюер проверяет понимание утечек памяти в реактивном коде. Частая ошибка — забыть про Disposable и считать, что потоки автоматически завершаются. Бесконечные потоки (interval, SSE) требуют явной отписки.