Alıntı (Salih Dinçer):
> Çöp toplayıcı defragment yapıyor mu?
D bu konuda bir kısıtlama getirmiyor. Kullanılan çöp toplayıcıya bağlı bir konu. dmd'nin çöp toplayıcısı Java'nın ilk zamanlarındakine benzeyen ilkel bir çöp toplayıcı ama DConf 2013'te çöp toplayıcı üzerine iki konuşma var:
http://dconf.org/talks/lucarella.html
http://dconf.org/talks/schuetze.html
Yakında bu konuda gelişme bekleyebiliriz.
Alıntı:
> İşte bu aşamada kim yapıyorsa belleğin parçalanması işletim sisteminin sorumluluğunda mı? Yoksa GC, bir sınıf bellek talep ettiğinde, toplam talep edilen kapasite kadar bellekte boş bir alan mı arıyor?
Tam emin değilim ama bildiğim kadarıyla şöyle: Programın çöp toplayıcısı işletim sisteminden bir miktar bellek istiyor ve alıyor. O noktadan sonra işletim sisteminin o bellekle hiçbir işi kalmıyor. Çöp toplayıcı orayı istediği gibi kullanıyor. Pool allocator'ların yaptığı gibi, o belleğin bölümlerini nesne büyüklüklerine göre kullanabilir: En küçük olanlar şuraya, biraz daha büyük olanlar buraya, vs.
Alıntı:
> Belki de arama işlemini GC yapmıyor, OS'a bırakılıyor olabilir mi?
Her ikisi de arama yapıyor. İşletim sistemi çöp toplayıcının istediği kocaman alanı arıyor; çöp toplayıcı da programın istediği büyüklükler için o bellekte kendisi arıyor.
Alıntı:
> Belleği daha verimli kullanmak için, örneğin bir dizinin elemanlarını boş olan yerler ile mi ilişkilendirlir. Yoksa işlemciyi daha etkin kullanmak için dizi boyutu kadar bir boş yer mi aranır?
Soruyu anlamadım ama şu gerçek bozulamaz: Bir dizinin elemanları bellekte yan yana bulunmak zorundadırlar: Onuncu eleman, birinci elemanın adresinden 10 eleman ötededir. Buna göre, dizinin boyu büyüdükçe bütün elemanların sığacağı kadar yeni bir yer edinilir ve elemanlar oraya kopyalanır. Bu aşamanın tam olarak nasıl işlediğini biliyoruz:
http://ddili.org/makale/d_dilimleri.html
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]