Jump to content

Проблема с истекшим слушателем

В компьютерном программировании является проблема истекшего прослушивателя распространенным источником утечек памяти для объектно-ориентированных языков программирования, среди наиболее распространенных для языков со сборкой мусора . [1]

Оно берет свое начало в шаблоне наблюдателя , где наблюдатели (или слушатели) регистрируются у субъекта (или издателя) для получения событий . В базовой реализации это требует как явной регистрации, так и явной отмены регистрации, как в шаблоне удаления , поскольку субъект содержит сильные ссылки на наблюдателей, поддерживая их активность. Утечка происходит, когда наблюдатель не может отписаться от субъекта, когда ему больше не нужно слушать. Следовательно, субъект по-прежнему содержит ссылку на наблюдателя, что предотвращает его сборку мусора (включая все другие объекты, на которые он ссылается) до тех пор, пока субъект жив, что может продолжаться до конца приложения.

Это приводит не только к утечке памяти, но и к снижению производительности, когда «незаинтересованный» наблюдатель получает нежелательные события и реагирует на них. Этого можно избежать, если субъект будет иметь слабые ссылки на наблюдателей, что позволит собирать мусор в обычном режиме без необходимости отмены регистрации.

  1. ^ Бездельники памяти на Яве , Итан Генри и Эд Ликлама
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d535d892597fd9dd80e5b3f8c3556acd__1666148220
URL1:https://arc.ask3.ru/arc/aa/d5/cd/d535d892597fd9dd80e5b3f8c3556acd.html
Заголовок, (Title) документа по адресу, URL1:
Lapsed listener problem - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)