Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah GC dilaksanakan dalam fungsi golang?
Dalam fungsi bahasa Go, GC secara automatik menuntut semula memori yang tidak lagi digunakan Kaedah pelaksanaan ialah: tanda penjejakan: Benang GC menandakan semua objek yang boleh dicapai. Jelas: Kosongkan objek yang ditandakan sebagai sampah dan menuntut semula ingatannya. Sebagai contoh, kepingan s yang dicipta dalam fungsi f ditandakan sebagai sampah dan dikumpulkan apabila f kembali.
Pelaksanaan GC dalam fungsi bahasa Go
Dalam bahasa Go, pengumpulan sampah (GC) dilakukan secara automatik mengikut masa jalan untuk menuntut semula memori yang tidak digunakan lagi. Apabila fungsi kembali, GC memeriksa objek yang dirujuk dalam bingkai tindanan fungsi dan menandakan objek yang tidak lagi diperlukan sebagai sampah. Cara GC dilaksanakan Objek boleh dicapai merujuk kepada objek yang boleh dikesan melalui penuding daripada objek akar program (seperti pembolehubah global, nilai kaedah).
Sapu: Selepas penandaan selesai, benang GC akan mengosongkan semua objek yang ditandakan sebagai sampah dan menuntut semula memori yang mereka duduki.
package main import "fmt" import "runtime" func main() { // 创建一个匿名函数,并在其内部分配内存 f := func() { var s []int for i := 0; i < 1000000; i++ { s = append(s, i) } } // 调用匿名函数 f() // GC 标记函数堆栈帧中的对象 runtime.GC() // GC 清除不再需要的对象 runtime.GC() }
f
mencipta s
Sliced dan menambahkan 1 juta integer padanya. Apabila f
kembali, kepingan s
tidak lagi dirujuk, jadi GC menandakannya sebagai sampah dan menuntut semula memori yang didudukinya. Dengan menjalankan runtime.GC()
sebelum dan selepas fungsi tanpa nama kembali, kita boleh memaksa GC untuk melaksanakan serta-merta dan memerhatikan bagaimana memori yang diduduki oleh f
dikeluarkan . Atas ialah kandungan terperinci Bagaimanakah GC dilaksanakan dalam fungsi golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!