Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
Kısaca Python garbage collector (çöp toplayıcı) yapısını açıklar mısınız?

Açık 1 Cevaplar 83 Gösterim Python
Garbage collector yapısını kısaca Python'da nasıl çalıştığını açıklayabilir misiniz?

1 cevap

0

Basit olarak baktığımızda

  • Tipik referance counting (referans sayma) işlemini yapar. Yani bir objeyi gösteren diğer objelerin sayısı tutulur, bu sayı 0 a indiği zaman objenin referansı kalmadığı için hafızada çöp olarak algılanır ve silinir
  • Yine başka bir yaygın yaklaşım reference cycles (referans döngüleri) kontrol edilir. Örneğin obje1 ve obje2 olsun, obje1.x = obje2, obje2.x = obje1 olarak atanmış ama bu objeleri referans eden başka obje yok. İkisi birden kenarda çöp olarak durur memory leak (hafıza sızıntısı) oluşturur. Bu tarz durumlar periodik olarak kontrol edilip varsa silinir.
  • Jenerasyon hesaplanması yöntemi kullanılır. Bunun amacı garbage collector hızlı çalışmasıdır. Yani yeni oluşturulan objeler genelde eski oluşturulanlara nazaran daha fazla çöp olma ihtimali vardır. Keza eskiler henüz çöp olmadıysa hala kullanılıyor olma ihtimali yüksektir. O yüzden objeler jenerasyonlara ayrılır. Daha genç olan jenerasyon daha çok kontrol edilir. Yaşlanmış olanlar herhalde daha olgundur demekle aynı oluyor :)
Bu açıklamalar sadece python değil genel olarak garbage collector yapısında kullanılan konular. Biraz araştırdığım zaman pythonda da aynı konuların geçerli olduğunu gördüm.
(4.5k puan)