Долгоживущие объекты

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

class MyCache {
    private val cache = mutableMapOf<String, Bitmap>()

    fun addBitmap(key: String, bitmap: Bitmap) {
        cache[key] = bitmap
    }

    fun getBitmap(key: String): Bitmap? {
        return cache[key]
    }
}

class MainActivity : AppCompatActivity() {
    private val myCache = MyCache()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Добавление Bitmap в кэш
        val bitmap = BitmapFactory.decodeResource(resources, R.drawable.image)
        myCache.addBitmap("image_key", bitmap)
    }
}

В этом примере MainActivity создает экземпляр MyCache и добавляет в него Bitmap. Если MainActivity будет создана и уничтожена много раз, каждый раз будет создаваться новый экземпляр MyCache, но Bitmap не будет освобождаться из памяти, так как на него остаются сильные ссылки в cache.