TGViewer
Otabek’s I/O Otabek’s I/O @otabekswe · 2.84K subscribers
Post #259 860
Garbage Collection

Garbage collector odatda xotirani toza saqlash uchun kerak. U xuddi bir xizmatkorga o'xshaydi. Agar xonangizda keraksiz va ishlatilmaydigan narsalarni ko'rsangiz uni axlatga olib chiqib tashlaysiz. Xuddi shu ishni dasturlash tillarida Garbage Collectorlar bajaradi.

Hop Garbage collector qachon va qanday keraksiz object yoki data ni aniqlaydi?

Bu ishni amalga oshirish uchun inson qanday yo'l tutsa dastur ham deyarli o'shanday ish qiladi. Ya'ni reference count xisoblanadi. Inson biror narsani kim va necha marta ishlatishini ko'rib aniqlasa, dastur reference count xisoblaydi. Reference bu biror objectga yo'naltirilgan pointer ya'ni ko'rsatgich yo'l deb atasak bo'ladi.

Reference Count qanday ko'payadi yoki kamayadi?

Bilamizki biror o'zgaruvchi ochganimizda biz unga qiymat saqlamaymiz, balkim o'zgaruvchilar shunchaki bizni o'sha qiymatga kirishimiz uchun ko'rsatgich vazifasini o'taydi.

Bu huddi mahallada har bir nuqtaga odam qo'yib yashinmachoq o'ynashdek gap. Ya'ni qo'ygan odamlariz kim-qayerga ketganini ko'rsatib turadi va siz ko'p vaqt sarflamasdan ularni tez topishingiz mumkin (O(1) vaqtda desa ham bo'ladi 😅). O'zgaruvchilar ham shu vazifani bajaradi.

Qachon bir nechta o'zgaruvchi bitta object yoki dataga reference bo'lsa u yerda reference count oshadi. Agar ular keyin boshqa objectga reference qilinsa yoki o'chirib tashlansa, RC tushadi.

Misol uchun:

a = "hello" # "hello" objecti yaratildi va a unga reference bo'ldi
b = a # Ref. Count 1taga oshdi.
del a # Ref. Count 1taga tushdi
b = 17 # Ref. count 1taga kamaydi

Yuqoridagi misol Python dasturlash tiliga tegishli va u yerda reference count qachon oshishi va qachon tushishi ko'rsatilgan.

Kelin buni real ko'rish uchun mana bunday ish qilamiz. sys modulini getrefcount() funksiyasi bizga objectimiz nechta referencega egaligini ko'rishimiz mumkin. __del__() dunder methodi orqali esa object o'chirilganini ko'rishimiz mumkin, del statement objectni o'chirish uchun ishlatiladi.

import sys

class MyClass:
def __init__(self):
print("Creating object")

def __del__(self):
print("Deleting object")

obj = MyClass()
print("Reference count:", sys.getrefcount(obj) - 1)

# Reference Coutni oshiramiz
obj2 = obj
print("Reference count:", sys.getrefcount(obj) - 1)

# obj2 referenceni o'chiramiz
del obj2
print("Reference count:", sys.getrefcount(obj) - 1)

# obj ni o'chiramiz
del obj

Umid qilaman qisqacha Garbage collection mavzusiga tushunib oldingiz deb. Keyingi postda chuqurroq yoritishga harakt qilaman. Xatolar bo'lsa oldindan uzur.

@otabekswe
More from @otabekswe
  1. Sep 28, 2026Voicelab da bizga eng qiziq bo'lgan mavzu bu Small Language Models (Large Language Models…
  2. Sep 10, 2026Barchamiz miriqib kuzatgan O'rgimchak Odam, Chaqmoq Makvin, Aka-uka Kreshlar (Muzlik davri…
  3. Sep 7, 2026Biz yangilik qilishdan to'xtamayabmiz. • Aisha Comet LLM modelimizni chiqardik. Platformag…
  4. Sep 4, 2026#experience Deyarli bir yarim yildan buyon intervyular jarayonida bitta savol doim so'raym…
  5. Aug 28, 2026#experience Ko'pchilik bir xil savol beradi: "Model o'zilarnikimi yoki open-source modelmi…
  6. Aug 25, 2026Voicelab Desktop V1 chiqdi (katta yangilanish va yaxshilanish qildik), har kunlik bepul kr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →