Node.js
Heap ve stack
Node.js heap ve stack yönetimini öğrenirsin.
Heap ve stack
Node.js belleği iki bölgeye ayırır: stack (yığın) ve heap (yığın bellek). Stack, ilkel değerleri ve fonksiyon çağrı çerçevelerini tutar; hızlı ve otomatik temizlenir. Heap, nesneleri ve dizileri tutar; çöp toplayıcı tarafından yönetilir.
Bir classifyAllocation(type) fonksiyonu bu ayrımı modeller: 'primitive' ise 'stack', değilse 'heap' döndürür. Örnek: classifyAllocation('primitive') 'stack', classifyAllocation('object') 'heap' döndürür. Stack LIFO (son giren ilk çıkar) ile çalışır; fonksiyon döndüğünde çerçevesi hemen kaldırılır. Heap'teki nesneler ise hiçbir başvuru kalmayana kadar yaşar; sonra çöp toplayıcı onları toplar. Bu ayrım, bellek sızıntılarını anlamak için temeldir.
Stack davranışı
Stack, fonksiyon çağrılarıyla büyür ve küçülür. Bir fonksiyon çağrıldığında çerçevesi (parametreler, yerel değişkenler) stack'e eklenir; döndüğünde çıkarılır. Bu, otomatik ve hızlıdır; çöp toplama gerektirmez.
Örnek: function add(a, b) { return a + b; } çağrıldığında a, b ve dönüş adresi stack'e konur. Fonksiyon bitince bunlar kaldırılır. classifyAllocation('primitive') 'stack' döndürür çünkü ilkel değerler (sayı, dize, boolean) stack'te yaşar. classifyAllocation('object') 'heap' döndürür çünkü nesneler heap'te yaşar. Bu ayrım, hangi değerlerin çöp toplamaya girdiğini belirler. Stack temizliği anlıktır; heap temizliği gecikmeli olabilir.
Uygulama Bölge sınıflandırıcı yaz
function classifyAllocation(type) yaz. return type === 'primitive' ? 'stack' : 'heap' ile döndür. console.log(classifyAllocation('primitive')) ve console.log(classifyAllocation('object')) yazdır.
Örnek çözümü göster
function classifyAllocation(type) {
return type === 'primitive' ? 'stack' : 'heap';
}
console.log(classifyAllocation('primitive'));
console.log(classifyAllocation('object'));
Kendini test et
-
Bir nesne (object) hangi bölgede tutulur?
Cevabı göster
Heap — Nesneler heap'te tutulur, çöp toplayıcı yönetir.
-
stack değerini döndür
return type === 'primitive' ? '____' : 'heap';
Cevabı göster
return type === 'primitive' ? 'stack' : 'heap';
-
Kavramı açıklamasına eşle
- Stack
- İlkel değerler ve çerçeveler
- Heap
- Nesneler ve diziler
- LIFO
- Son giren ilk çıkar
- Çöp toplayıcı
- Heap'i temizler
Sıradaki ders: Generational GC