Go

Bellek Yönetimi

Stack vs heap, escape analysis, garbage collector, bellek profilleme, pprof, bellek sızıntıları

24 mülakat soruları·
Senior
1

Go'da stack tahsisi ile heap tahsisi arasındaki temel fark nedir?

Cevap

Stack otomatik olarak yönetilir ve tahsisler son derece hızlıdır (basit bir stack pointer hareketi). Stack üzerindeki değişkenler fonksiyon döndüğünde otomatik olarak serbest bırakılır. Heap, belleği serbest bırakmak için garbage collector'a ihtiyaç duyar ve Go runtime'ı devreye girdiği için tahsisler daha yavaştır. Fonksiyonun ötesinde yaşayan veya boyutu derleme zamanında bilinmeyen değişkenler heap'e gider.

2

Go'da escape analysis nedir?

Cevap

Escape analysis, bir değişkenin stack üzerinde kalabileceğini mi yoksa heap'te tahsis edilmesi gerektiğini mi belirlemek için Go derleyicisi tarafından yapılan statik bir analizdir. Derleyici bir değişkenin oluşturulduğu fonksiyonun dışında referans verildiğini tespit ederse (döndürülen bir pointer, global bir değişkende saklama vb.), değişken 'escape' eder ve heap'te tahsis edilir. Bu analiz bellek tahsislerini otomatik olarak optimize eder.

3

Derleme sırasında escape analysis sonuçları nasıl görüntülenir?

Cevap

-gcflags=-m bayrağı escape analysis kararlarını görüntülemeyi sağlar. -m=2 veya -m=3 kullanmak, bir değişkenin neden escape ettiğine dair daha fazla ayrıntı sağlar. Örneğin 'go build -gcflags=-m=2', bir değişkenin heap'e taşındığını belirtmek için 'moved to heap: x' gibi mesajlar gösterir. Bu araç, kritik kodda bellek tahsislerini optimize etmek için gereklidir.

4

Bir yerel değişken hangi durumda heap'e escape eder?

5

Go'da garbage collector'ın temel rolü nedir?

+21 mülakat soruları

Bir sonraki mülakatın için Go'de uzmanlaş

Tüm sorulara, flashcards'a, teknik testlere, code review alıştırmalarına ve mülakat simülatörlerine eriş.

Ücretsiz başla