Как стать автором
Обновить

Комментарии 5

Да у самого андроида есть утечки внутри - тот же тост или soundpool захватывают ссылки на контекст внутри.

Looper.prepare() это сильно, я не сразу вспомнил что оно в Handler Tread использовалось при переопределении.

Как совет более полезны были бы leek canary, meminfo и mem dump profiler для поиска. Знать про gc при этом много не надо.

Добрый день. Данная статья запланирована как первая часть из двух, и поэтому в ней рассмотрена в основном теоретическая составляющая большой темы. Я посчитал написать о GC, JMM и FD, т.к. при поиске и устранении утечек памяти в проектах различных уровней сложности мне потребовалось углубиться в данные темы для лучшего понимания того кода, который мы ежедневно пишем в своих проектах. Для более подробного изучения тех терминов, которые в статье не раскрыты, я приложил ссылки, которые по сути являются документацией и с научной точки зрения рассмотрены до меня.

В следующей статье запланировано рассказать и на практике показать работу с leak canary, android studio profiler и т.п.

В любом случае, спасибо за фидбек и рад, что Вы для себя нашли что-то новое!

Отличная статья!

А зачем луперу File Descriptor? Что он с ним делает?

Он используется в C++ слое. Файловый дескриптор используется двумя утилитами eventfd и epoll, они позволяют сделать что-то вроде wait/notify на уровне системы. Файловый дескриптор выступает чем-то вроде монитора.

Например, приложение сделало все действия которые хотело. Ему больше нечего делать и оно ставится в режим ожидания (wait). Когда системе надо будет его разбудить, она использует файловый дескриптор чтобы его уведомить о том, что пора обрабатывать новые действия (notify).

Если интересна тема, то есть статья про Looper в C++ слое, там подробнее про эту логику написано.

Спасибо

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации