Bahasa Go ialah bahasa pengaturcaraan peringkat tinggi moden yang popular untuk pengaturcaraan serentak yang cekap dan pengurusan memori yang baik. Pengurusan memori Go diselesaikan oleh Pengumpul Sampah (GC). GC ialah mekanisme untuk mengurus memori secara automatik Fungsi utamanya adalah untuk mengesan dan menuntut semula ruang memori yang tidak lagi digunakan untuk mengelakkan kebocoran memori dan masalah berkaitan memori yang lain. Dalam bahasa Go, mekanisme automatik GC menghapuskan keperluan untuk pembangun mengurus memori secara manual, yang boleh meningkatkan kecekapan pembangunan dengan banyak. Walau bagaimanapun, dalam beberapa kes, pembangun perlu melumpuhkan GC buat sementara waktu dan melakukan beberapa operasi khas. Dalam artikel ini, kita akan belajar cara menghentikan GC di Golang.
Prinsip asas GC Golang
Di Golang, GC mengesan ruang memori yang tidak lagi digunakan dan menuntut semula memori yang didudukinya. Secara khusus, GC akan membahagikan keseluruhan memori kepada dua bahagian: objek akar dan objek bukan akar, dan kemudian melakukan pengumpulan sampah pada objek bukan akar. Semasa GC sedang berjalan, ia akan menjeda Goroutine semasa (benang ringan dalam pengaturcaraan serentak dalam bahasa Go) sehingga kutipan sampah selesai. Oleh itu, walaupun GC boleh mengurus memori secara automatik, ia juga akan membawa overhed prestasi tertentu kepada program.
Cara menghentikan GC Golang
Di Golang, pembangun boleh mencetus GC secara manual dengan memanggil fungsi runtime.GC(). Walau bagaimanapun, dalam beberapa kes (seperti ujian prestasi dan analisis memori) kami perlu melumpuhkan GC. Secara lalai, melumpuhkan GC boleh dicapai dengan menetapkan pembolehubah persekitaran GOMAXPROCS. Pembolehubah persekitaran GOMAXPROCS digunakan untuk menetapkan bilangan mata wang maksimum untuk program semasa. Apabila nilai GOMAXPROCS ialah 1, program akan dijalankan dalam satu persekitaran CPU dengan GC dilumpuhkan. Dalam mod ini, apabila penggunaan memori mencapai nilai pratetap (biasanya 2GB), program akan ranap. Oleh itu, kita perlu menyesuaikan diri mengikut keadaan sebenar.
Selain kaedah di atas, anda juga boleh menetapkan ambang peratusan GC dengan memanggil fungsi runtime.SetGCPercent() apabila program sedang berjalan. Fungsi ini menerima parameter integer yang menunjukkan peratusan CPU maksimum yang diduduki oleh kitar semula GC. Menetapkan nilai ini kepada 0 melumpuhkan GC dan menetapkannya kepada 100 menyebabkan GC menggunakan 100% sumber CPU untuk koleksi.
Ringkasan
Di Golang, GC ialah mekanisme untuk mengurus memori secara automatik, yang boleh mengelakkan kebocoran memori dan masalah berkaitan memori yang lain. Walaupun GC boleh meningkatkan kecekapan pembangunan, dalam beberapa kes, kami perlu melumpuhkannya buat sementara waktu. Di atas menerangkan dua kaedah berbeza untuk melumpuhkan GC, iaitu menetapkan pembolehubah persekitaran GOMAXPROCS dan memanggil fungsi runtime.SetGCPercent(). Pemaju harus memilih kaedah yang paling sesuai dengan keperluan mereka dalam situasi sebenar. Tidak kira kaedah yang digunakan, perlu diingatkan bahawa melumpuhkan GC mungkin memberi kesan kepada prestasi dan kebolehpercayaan program dan perlu digunakan dengan berhati-hati.
Atas ialah kandungan terperinci Bagaimana untuk berhenti GC di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!