SORU
17 HAZİRAN 2011, Cuma


Nasıl yeni otomatik referans sayma mekanizması iş yapar?

Birisi kısaca ARC nasıl çalıştığını bana açıklayabilir mi? Çöp Toplama farklı olduğunu biliyorum, ama işe yaradı tam olarak merak ettim.

Ayrıca, eğer ARC GC performansını engellemeden ne yaparsa, neden Java kullanmak GC mu? Neden ARC de kullanmıyor?

CEVAP
20 HAZİRAN 2011, PAZARTESİ


Objective-C için gelen her yeni geliştirici korumak için, yayım ve autorelease nesnelerin katı kuralları öğrenmesi gerekiyor. Bu kurallar bile ima adlandırma kuralları nesneleri yöntemleri tarafından döndürülen sayısını korumak belirtin. Objective-C bellek yönetimi bu kuralları kalp ve sürekli bunları uygulamak için bir kere olur ikinci doğa, ama en tecrübeli bile Cocoa geliştiricileri, zaman zaman hata yapabilir.

Çınlama Statik analiz ile, LLVM geliştiriciler bu kurallar kodunuzu götüren bir araç yolları arasında bellek sızıntıları ve overreleases işaret etmek inşa edebilecek kadar güvenilir olduğunu fark etti.

Automatic reference counting (ARC) bir sonraki mantıklı adım bu. Eğer derleyici ve nesneleri tutma serbest olman gereken yerde tanıyabilir, neden sizin için bu kodu Ekle değil mi? Compiler ve kardeşleri en büyük ne sert, tekrarlanan görevleri vardır. İnsanlar bazı şeyleri unutabilir ve hata yapar, ama bilgisayarlar çok daha tutarlı.

Ancak bu tamamen bu platformlarda bellek yönetimi hakkında endişe ücretsiz değil. Benim cevabım sizin açınızdan biraz düşünce gerektirebilir here, zayıf işaretçiler işaretlemek için dikkat etmeniz esas konu, tarif (devir korur). Ancak, bu YAY kazanıyorsun ne için karşılaştırıldığında küçük.

Zaman göre manuel bellek yönetimi ve çöp toplama, ARC verir hem en iyi dünyalar ile kesmek gerek yazmak korumak / onay kodu, henüz sahip durdurulması ve testere dişi bellek profilleri görülen bir çöp toplama çevre. Tek avantajları çöp toplama üzerinde bu korumak döngüsü ile başa çıkmak için kendi yetenek ve atom atamalar ucuz olması here tartışıldığı gibi). ARC uygulamaları ile mevcut Mac GC kodumu her yerini biliyorum.

Olmadığı bu olabilir genişletilmiş diğer diller gibi dişli etrafında referans sayma sistemi Objective-C zor olacağını için geçerli bu Java veya başka bir dil, ama bilmiyorum bu kadar düşük seviye bir derleyici detayları için kesin bir açıklama yok. Apple bir LLVM bu çaba bastırıyor göz önüne alındığında, Objective-C gibi bir başka parti kendi önemli kaynaklar işleyen sürece ilk gelen bu.

Bu açıklanması insanlar böyle bir şey yapmış olabilir farkında değildi yani WWDC geliştiriciler şok. Zamanla diğer platformlarda görünebilir, ama şimdi özel LLVM ve Objective-C

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • Rayone GB

    Rayone GB

    14 Temmuz 2007
  • theKGB65

    theKGB65

    24 Aralık 2007