Помогите Диме помочь помогать помочь помогать

Где купить одеяло пуховое в Киеве

19.07.2016


Сообщения с данными могут передаваться разными способами, при этом выбор конкретной реализации определяет не только вероятность утечки памяти, но и размер этой утечки. Следующий фрагмент иллюстрирует ловушки в одной из реализаций. В примере определяется класс Outer с объектом Handler для обработки сообщений. На рис. 6.9 показано дерево ссылок на объекты в выполняющемся потоке, начиная с момента, когда сообщение Message было отправлено в очередь, и до момента, когда сообщение вернулось в пул для повторного использования, то есть после того, как Handler обработал его. Цепочка ссылок немного сокращена для большей очевидности, тем не менее содержит все самые важные объекты, ссылки между которыми необходимо отслеживать.


В коде примера нарушены оба правила предотвращения утечек памяти: поток содержит ссылки на большее количество объектов, чем это необходимо, и эти ссылки остаются достижимыми в течение длительного времени. Ниже мы увидим, как устранить эти проблемы. Возможно стоит купить одеяло пуховое в киеве.


Опасность утечки памяти возрастает пропорционально продолжительности выполнения задачи. Короткоживущие задачи снижают вероятность утечек памяти.


После добавления объекта Message в очередь сообщений из потока-потребителя создаётся косвенная ссылка на него. Чем дольше сообщение находится в очереди или обрабатывается в принимающем потоке, тем выше вероятность утечек памяти.