Lua Çöp Toplayıcısına Giriş
Lua'nın artımlı çöp toplayıcısının nasıl çalıştığını öğrenin: işaretle ve süpür, eşikler ve collectgarbage().
Lua Çöp Toplayıcısına Giriş, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Çöp Toplama Nedir?
Lua, artık herhangi bir kökten erişilemeyen nesnelerin (tablolar, dizeler, kapanımlar) kapladığı belleği geri kazanmak için otomatik bir çöp toplayıcı kullanır.
İşaretle ve Süpür Algoritması
Lua'nın GC'si artımlı bir işaretle ve süpür algoritması kullanır. Köklerden başlayarak erişilebilir tüm nesneleri işaretler, ardından işaretlenmemiş nesneleri süpürür (serbest bırakır).
Artımlı Toplama
GC, programla dönüşümlü olarak küçük adımlarla çalışır. Bu, uzun duraklamaları önler. Her adımda yapılacak iş miktarı GC adımı parametreleriyle denetlenir.
collectgarbage İşlevi
collectgarbage(opt, arg), GC'yi doğrudan denetler.
collectgarbage("collect") -- run a full GC cycle
collectgarbage("stop") -- stop automatic GC
collectgarbage("restart") -- restart automatic GC
print(collectgarbage("count")) -- KB of memory in useGC Parametreleri
collectgarbage("setpause", n), GC döngüleri arasındaki duraklamayı ayarlar (200 = sonraki döngüden önce belleği iki katına çıkar). "setstepmul", GC hızını denetler.
collectgarbage("setpause", 200) -- default
collectgarbage("setstepmul", 200) -- defaultZayıf Başvurular ve GC
Normalde bir başvuru, bir nesneyi canlı tutar. Zayıf başvuru ise bunu yapmaz; zayıf bir tablo nesneye işaret etse bile GC nesneyi toplayabilir.
Üretimsel GC (Lua 5.4)
Lua 5.4, isteğe bağlı bir üretimsel GC kipini kullanıma sundu. Genç nesneler sık, eski nesneler daha seyrek toplanır. collectgarbage("generational") ile açıp kapatabilirsiniz.
Bellek Baskısı Tetikleyicileri
Bellek kullanımı bir eşiği aştığında GC otomatik olarak çalışır (eşik pause ile ayarlanır). Çok sayıda geçici tablo ayırmak GC baskısını artırabilir ve programınızı yavaşlatabilir.
GC Baskısını Azaltma
- Yeni tablolar ayırmak yerine tabloları yeniden kullanın.
- Yoğun döngülerde kısa ömürlü çok sayıda kapanım oluşturmaktan kaçının.
- Boyutu bilinen diziler için belleği önceden ayırın.
Dize Stajlama
Lua tüm dizeleri stajlar; aynı dizeler tek bir nesneyi paylaşır. Bu, dize oluşturmanın O(n) karmaşıklığında özetleme, karşılaştırmanın ise O(1) olduğu anlamına gelir. Kısa dizeler çok düşük maliyetlidir.
Sonlandırıcılar (__gc)
Tablolar, nesne serbest bırakılmadan önce GC tarafından çağrılan bir __gc metamethod'una sahip olabilir. Dosya tanıtıcıları veya C işaretçileri gibi harici kaynakları serbest bırakmak için kullanışlıdır.
GC Sorusu
collectgarbage("count") ne döndürür?
Özet: Lua GC Temelleri
Lua'nın artımlı işaretle ve süpür GC'si erişilemeyen belleği otomatik olarak geri kazanır. Toplamayı izlemek ve denetlemek için collectgarbage kullanın. Tabloları yeniden kullanarak ve yoğun kod yollarında aşırı bellek ayırmaktan kaçınarak baskıyı azaltın.
Sıkça Sorulan Sorular
“Lua Çöp Toplayıcısına Giriş” dersi ücretsiz mi?
Evet — “Lua Çöp Toplayıcısına Giriş” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Lua Çöp Toplayıcısına Giriş” dersinde ne öğreneceğim?
Lua'nın artımlı çöp toplayıcısının nasıl çalıştığını öğrenin: işaretle ve süpür, eşikler ve collectgarbage(). Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Lua Çöp Toplayıcısına Giriş” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Lua Çöp Toplayıcısına Giriş
- Zayıf Anahtarlar ve Zayıf Değerler
- __gc ile Sonlandırıcılar
- Bellek Sızıntılarından Kaçınma