Долгоживущие объекты
Иногда сильные ссылки могут приводить к тому, что объекты становятся долгоживущими, что может увеличить использование памяти и снизить производительность. Например, если объект сохраняется в глобальном статическом поле и не освобождается после использования, это может привести к накоплению объектов в памяти.
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
.