Go

Manajemen Memori

Stack vs heap, escape analysis, garbage collector, memory profiling, pprof, memory leaks

24 pertanyaan wawancaraยท
Senior
1

Apa perbedaan utama antara alokasi pada stack dan alokasi pada heap di Go?

Jawaban

Stack dikelola secara otomatis dan alokasinya sangat cepat (sekadar pergeseran stack pointer). Variabel pada stack otomatis dibebaskan ketika fungsi return. Heap memerlukan garbage collector untuk membebaskan memori dan alokasinya lebih lambat karena melibatkan runtime Go. Variabel yang bertahan di luar fungsi atau yang ukurannya tidak diketahui saat kompilasi akan ditempatkan di heap.

2

Apa itu escape analysis di Go?

Jawaban

Escape analysis adalah analisis statis yang dilakukan oleh kompiler Go untuk menentukan apakah sebuah variabel dapat tetap berada di stack atau harus dialokasikan di heap. Jika kompiler mendeteksi bahwa sebuah variabel direferensikan di luar fungsi pembuatannya (melalui pointer yang dikembalikan, penyimpanan dalam variabel global, dll.), variabel tersebut 'escape' dan akan dialokasikan di heap. Analisis ini secara otomatis mengoptimalkan alokasi memori.

3

Bagaimana cara melihat hasil escape analysis saat kompilasi?

Jawaban

Flag -gcflags=-m memungkinkan untuk melihat keputusan escape analysis. Menggunakan -m=2 atau -m=3 memberikan lebih banyak detail tentang mengapa sebuah variabel escape. Misalnya 'go build -gcflags=-m=2' akan menampilkan pesan seperti 'moved to heap: x' untuk menunjukkan bahwa sebuah variabel dipindahkan ke heap. Alat ini penting untuk mengoptimalkan alokasi memori dalam kode kritis.

4

Dalam kasus apa sebuah variabel lokal escape ke heap?

5

Apa peran utama garbage collector di Go?

+21 pertanyaan wawancara

Kuasai Go untuk wawancara berikutnya

Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.

Mulai gratis