Sobes.tech
Back to questions
Junior — Middle
92

Какими методами можно предотвратить утечки памяти в приложениях?

Companies where asked
EDJE

Answer from AI

sobes.tech AI

Утечки памяти в Android-приложениях можно предотвратить следующими методами:

  • Освобождение ресурсов: всегда закрывайте Cursor, InputStream, OutputStream и другие ресурсы после использования.
  • Избегание сильных ссылок на Context: не храните ссылки на Activity или Context в статических переменных, чтобы не препятствовать сборщику мусора.
  • Использование WeakReference: для объектов, которые не должны препятствовать сбору мусора.
  • Отписка от слушателей и колбеков: при уничтожении Activity или Fragment отписывайтесь от всех слушателей, чтобы избежать удержания ссылок.
  • Проверка циклических ссылок: особенно в случае с анонимными классами и лямбдами.
  • Использование профилировщиков: Android Profiler, LeakCanary для обнаружения и анализа утечек.

Пример использования WeakReference:

class MyClass(context: Context) {
    private val contextRef = WeakReference(context)

    fun doSomething() {
        val ctx = contextRef.get()
        ctx?.let {
            // работа с контекстом
        }
    }
}