Sobes.tech
Назад к вопросам
Junior — Middle
67

Можешь привести примеры ситуаций или факторов, которые могут привести к утечкам памяти в приложениях на Android?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Основные причины утечек памяти в Android-приложениях:

  • Долгоживущие ссылки на контекст Activity или View. Например, статические переменные, которые хранят ссылку на Activity, не дают ей быть собранной сборщиком мусора.

  • Неправильное использование слушателей и колбэков. Если слушатель не отписан, он может удерживать ссылку на объект.

  • Использование анонимных внутренних классов и лямбд, которые неявно держат ссылку на внешний класс.

  • Неправильное управление ресурсами, например, не закрытые Cursor, InputStream, Bitmap.

  • Использование Handler с задержками или сообщений, которые ссылаются на Activity, но не очищаются при уничтожении.

  • Кэширование больших объектов без ограничения размера.

Пример утечки из-за статической ссылки:

class MyActivity : AppCompatActivity() {
    companion object {
        var leakedReference: MyActivity? = null
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        leakedReference = this // Activity не будет освобождена
    }
}

Чтобы избежать утечек, важно правильно управлять жизненным циклом объектов и освобождать ресурсы.