On Wednesday, 16 December 2020 at 16:45:17 UTC, Ali Çehreli (acehreli) wrote:
>Çöp toplayıcı geleneksel olarak performansla ilgili belirsizlik sunar. D'nin yakın olduğu dillerden C ve C++ bu yüzden çöp toplayıcıdan uzak dururlar ve hatta onu kötülerler. :) (Öte yandan, "boehm collector" C ve C++'çı Hans Böhm tarafından yazılmıştır.)
C ve C++ nesnelerin belirli zamanlarda sonlandırılmalarının doğru olduğunu savunur (deterministic destruction) ama bazı karşılaştırmalar çöp toplayıcının daha hızlı olabildiğini göstermiştir. (Bartosz Milewski'nin yazıları bu konuya değinir ama şimdi kaynak aramıyorum. :) Örneğin, belirli bir anda sonlandırılan bir C++ nesnesi her elemanı binlerce elemana sahip binlerce elemanlı vector olabilir ve bir sürü temizlik işlemi ve belleğin tek tek geri verilmesi çöp toplayıcının toplam işleminden yavaş olabilir.)
D'nin benzetildiği Java ve C# çöp toplayıcı kullanırlar ve çöp toplayıcıdan pek şikayet etmezler. Python ve başka bir sürü dil de mutlu mutlu çöp toplayıcı kullanır.
Burada önemli olan, çöp toplayıcının gerçekten yavaşlık getirdiği durumlarda D programcısının bir şey yapıp yapamadığıdır:
- Senin de söylediğin gibi, nogc çöp toplayıcının kullanılmadığını garanti eder.
- Gerektiğinde malloc vs. ile kendi bellek yönetimimizi sağlayabiliriz.
- vs.
Bunlara rağmen, D'nin çöp toplayıcısı başka dillerinkiyle karşılaştırıldığında düşük nitelikli olarak kabul edilir. Örneğin, "generational" değildir. Buna rağmen, D runtime bir çöp toplayıcı arayüzü sunar ve kullanıcının kendi çöp toplayıcısını getirmesine izin verir. (Bundan yararlanan proje olduğunu duymadım.)
Yine de, sürekli iyileştiriliyor. Örneğin, bellek tarama işlemi bir iki sene önce "multi-threaded" yapıldı.
Hocam sizin sözlerinizle de okumak isterim: nedir bu Jenerasyonel Çöp Toplayıcı. Gerçi okumaya devam, öğrencez:
https://stackoverflow.com/questions/2257563/what-are-the-generations-in-garbage-collection
Sevgiler...