SORU
14 Mayıs 2009, PERŞEMBE


JavaScript çöp toplama nedir?

JavaScript çöp toplama nedir? Bir web programcı daha iyi kod yazmak için JavaScript çöp toplama hakkında anlamak için önemli olan şey nedir?

CEVAP
14 Mayıs 2009, PERŞEMBE


Eric Lippert bu konu hakkında detailed blog post bir süre önce (ayrıca bu karşılaştırma yazdıVBScript). Daha doğrusu, çok benzer olsa da ECMA Microsoft'un kendi uygulaması olan JScript yaklaşık JavaScript yazdı. Davranışların büyük bir çoğunluğu Internet Explorer JavaScript motoru için aynı olmayacağını kabul edilebilir olduğunu tahmin ediyorum. Tabii ki, bu uygulama ortak ilkeleri yakalamak ve diğer tarayıcılar için geçerlidir diye şüpheleniyorum ama tarayıcı için tarayıcı değişir.

Bu sayfadan alıntı:

JScript nongenerational kullanır mark & sweep çöp toplayıcısı. Bu bu gibi çalışır:

  • "Kapsam"olan her değişken bir denir"". çöpçü Bir çöpçü bir numara, bir nesne anlamlara gelebilir, dize, ne olursa olsun. Bir listesini tutmak -- değişkenler taşınır çöpçüler sahneye çıkarken scav listesine kapsam ve scav liste dışı kapsam dışına çıkıyorlar.

  • Şimdi ve Çöp her zaman toplayıcı çalışır. İlk koyar "her nesne, değişken,mark string, vb – tüm hafıza izlenen GC tarafından. (JScript DEĞİŞKEN kullanır veri yapısı içten ve orada ek olarak kullanılmayan bitleri bol biz sadece bir set böylece yapı, onlara.)

  • İkinci olarak, bu lekeyi temizler leş yiyiciler ve geçişli kapatılması çöpçü başvuruları. Eğer öyleyse çöpçü başvurular bir nesne nonscavenger biz temizlemek nesne bu nonscavenger üzerinde bit ve her şeyi ifade eder. (Ben kelime "" bir kapak kullanıldığında benim daha önce daha farklı bir anlam post.)

  • Bu noktada tüm biliyoruz bellek hala işaretli ayrılır herhangi varılması mümkün olmayan bellek -kapsamlı bir değişken herhangi bir yol. Tüm nesneleri söylenen bu kendilerini yıkmak, yok eder döngüsel başvurular.

Çöp toplama temel amacı programcı izin vermektirdeğilbellek yönetim oluşturmak ve, elbette kullanın endişelenecek bazen bunu engellemenin yolu yok - her zaman yararlı çöp toplama nasıl çalıştığı hakkında en azından kabaca bir fikir var.

Farkında olmak için birkaç özel nokta var. Apple geliştirici sitesine bu konuda some guidelines vardır. Oradan iki önemli olanlar:

  • Delete deyimlerini kullanın. Bir nesnenin yeni bir ifade kullanarak oluşturduğunuzda, delete deyimi ile eşleştirmek. Bu özellik adını içeren bellek nesnesi ile ilişkilendirilmiş, çöp toplama için kullanılabilir olmasını sağlar. Delete deyimi “Boşaltma Nesneleri.” daha çok tartışılır
  • Var anahtar sözcüğünü kullanın. Herhangi bir değişken var anahtar sözcüğü olmadan oluşturulan küresel kapsamı oluşturulur ve asla çöp toplama işlemi için uygundur, bir bellek sızıntısı için fırsatı sunuyor.

Bu uygulamaları Apple bir site, onlar için tüm JavaScript motorlarından (farklı tarayıcılarda) yine de geçerli olacağını tahmin ediyorumolabilirSafari için oldukça özel olacak. (Belki birisi bunu açıklamak olabilir mi?)

Bu yardımcı olur umarım.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Distractify

    Distractify

    1 Aralık 2011
  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • JonnyEthco

    JonnyEthco

    5 EKİM 2006