Skip to content

Runtime

Runtime bahasa Go adalah infrastruktur inti untuk eksekusi program Go, bertanggung jawab untuk mengelola alokasi memori, garbage collection, penjadwalan goroutine, pemantauan sistem, dan fungsi kunci lainnya. Berbeda dengan bahasa lain, runtime Go terintegrasi erat dengan kode pengguna, yang memungkinkan Go mencapai pemrograman konkuren yang efisien dan manajemen memori otomatis.

Komponen Inti

Runtime Go terutama terdiri dari beberapa komponen inti berikut:

Scheduler GMP

Scheduler GMP adalah salah satu komponen paling inti dari runtime Go, bertanggung jawab untuk menjadwalkan sejumlah besar goroutine ke jumlah terbatas thread sistem untuk dieksekusi. GMP masing-masing mewakili:

  • G (Goroutine): Goroutine, thread ringan di Go
  • M (Machine): Thread sistem, thread eksekusi tingkat sistem operasi
  • P (Processor): Processor, berisi sumber daya yang diperlukan untuk menjalankan kode Go

Desain scheduler GMP memungkinkan Go untuk secara efisien mendukung ribuan goroutine konkuren, adalah batu loncatan untuk fitur konkurensi tinggi bahasa Go.

Alokator Memori

Alokator memori Go bertanggung jawab untuk mengelola alokasi memori heap, desainnya sangat dipengaruhi oleh TCMalloc Google. Fitur utamanya meliputi:

  • Desain cache multi-level, mengurangi kompetisi lock
  • Mengadopsi strategi alokasi yang berbeda berdasarkan ukuran objek
  • Secara otomatis memutuskan apakah objek dialokasikan di stack atau heap

Alokator memori bekerja sama erat dengan garbage collector, bersama-sama mengimplementasikan manajemen memori yang efisien.

Garbage Collector

Go mengadopsi algoritma garbage collection Concurrent Mark-Sweep, fitur utamanya:

  • Algoritma penandaan tiga warna
  • Teknologi write barrier untuk garbage collection konkuren
  • Latensi rendah, sebagian besar waktu STW di bawah 100 mikrodetik

Garbage collector Go telah dioptimalkan selama bertahun-tahun, sudah dapat memenuhi kebutuhan performa sebagian besar skenario bisnis.

Monitor Sistem

Monitor sistem (sysmon) adalah thread monitor independen, bertanggung jawab untuk:

  • Preempt goroutine yang berjalan dalam waktu lama
  • Memeriksa apakah perlu memicu garbage collection
  • Memantau status sistem dan做出 penyesuaian yang sesuai

Ia berjalan terus-menerus di latar belakang, menjamin stabilitas program Go.

Saran Pembelajaran

Disarankan untuk belajar pengetahuan terkait runtime sesuai urutan berikut:

  1. Pertama pelajari Scheduler GMP, pahami mekanisme penjadwalan goroutine
  2. Kemudian pelajari Alokator Memori, pahami bagaimana memori dialokasikan
  3. Kemudian pelajari Garbage Collector, pahami bagaimana memori dikembalikan
  4. Terakhir pelajari Monitor Sistem, pahami mekanisme pemantauan后台 runtime

Golang by www.golangdev.cn edit