search
Giriş
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 oy
83 gösterim
Garbage collector yapısını kısaca Python'da nasıl çalıştığını açıklayabilir misiniz?
Python kategorisinde 4.6k puan

1 cevap

0 oy

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.6k puan

İlgili sorular

0 oy
0 cevap 18 gösterim
18 gösterim
Python nedir? Python kullanarak neler yapabilirim?
10 Haziran Python kategorisinde kenan 4.6k puan sordu
0 oy
1 cevap 15 gösterim
15 gösterim
Python kullanarak http sayfası nasıl çağırıp dönen değeri alabilirim?
10 Haziran Python kategorisinde kenan 4.6k puan sordu
0 oy
1 cevap 16 gösterim
16 gösterim
Python'da logging.error(e) yazdırdığım zaman tek satırlık bir bilgi yazdırıyor. Hatanın nereden kaynaklandığını rahatça göremiyorum. StackTrace/traceback nasıl yazdırılır?
4 Mayıs Python kategorisinde kenan 4.6k puan sordu
0 oy
1 cevap 19 gösterim
19 gösterim
Python kullanarak sys.argv[1] var mı nasıl kontrol edebilirim? if sys.argv[1]: ..... dediğim zaman hata alıyorum.
24 Nisan Python kategorisinde kenan 4.6k puan sordu
0 oy
1 cevap 28 gösterim
28 gösterim
Bir dosyanın ismini değiştirmek istiyorum. Hangi kodları kullanmam gerekir?
15 Nisan Python kategorisinde kenan 4.6k puan sordu