Sobes.tech
Junior — Middle

Төрдүү шилтемелердин түрлөрү эмнелерден айырмаланат жана алар эс тутумду башкарууда кандай иштешет?

sobes.tech AI

AIден жооп

Androidда (жана жалпы Java/Kotlinда) эс тутумду башкарууда, garbage collection'ке таасир этүүчү ар кандай шилтемелер бар:

  • Күчтүү шилтеме (Strong Reference): обьекске карата жөнөкөй шилтеме. Эгер кеминде бир күчтүү шилтеме болсо, обьект garbage collector тарабынан өчүрүлбөйт.

  • Жумшак шилтеме (Soft Reference): кэш үчүн колдонулат. Жумшак шилтемеге ээ обьект гана эс тутум жетишпегенде өчүрүлөт.

  • Слаб шилтеме (Weak Reference): мындай шилтемеге ээ обьект кийинки garbage collection циклинде өчүрүлүшү мүмкүн, ал тургай слаб шилтемелер болсо да. Обьектти өчүрүүгө тоскоол болбошу керек болгон шилтемелер үчүн колдонулат.

  • Фантом шилтеме (Phantom Reference): обьект өчүрүлүүгө даяр болгондо, бирок дагы эле өчүрүлбөгөндө, анын убактысын көзөмөлдөө үчүн колдонулат. Обьект өчүрүлгөндөн кийин кошумча аракеттерди жүргүзүүгө мүмкүндүк берет.

Кotlinдеги слаб шилтеменин мисалы:

val strongRef = SomeObject()
val weakRef = WeakReference(strongRef)

// Эгер strongRef null болсо, обьект garbage collector тарабынан өчүрүлүшү мүмкүн, жана weakRef.get() null кайтарат

Түрдүү шилтемелердин түрлөрүн колдонуу обьекттердин жашоо циклин башкарууга жана эс тутумдун колдонушун оптималдаштырууга жардам берет.