Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah cara saya benar-benar mengosongkan kepingan dalam Go dan menuntut semula ingatannya?

Bagaimanakah cara saya benar-benar mengosongkan kepingan dalam Go dan menuntut semula ingatannya?

Patricia Arquette
Lepaskan: 2024-11-19 14:36:03
asal
645 orang telah melayarinya

How do I truly clear a slice in Go and reclaim its memory?

Mengosongkan Slices dalam Go

Coretan kod yang disediakan menunjukkan satu pendekatan untuk "mengosongkan" kepingan dengan menetapkan panjangnya kepada 0:

package main

import "fmt"

func main() {
    letters := []string{"a", "b", "c", "d"}
    fmt.Println(cap(letters))
    fmt.Println(len(letters))
    // clear the slice
    letters = letters[:0]
    fmt.Println(cap(letters))
    fmt.Println(len(letters))
}
Salin selepas log masuk

Walaupun pendekatan ini kelihatan mengosongkan kandungan hirisan, ia tidak melepaskan memori asas yang dikaitkan dengan hirisan kepada pengumpul sampah. Untuk benar-benar membersihkan kepingan dan menuntut semula ingatannya, amalan terbaik ialah menetapkannya kepada nihil:

package main

import "fmt"

func main() {
    letters := []string{"a", "b", "c", "d"}
    fmt.Println(cap(letters))
    fmt.Println(len(letters))
    // clear the slice
    letters = nil
    fmt.Println(cap(letters))
    fmt.Println(len(letters))
}
Salin selepas log masuk

Menetapkan hirisan kepada nihil mempunyai beberapa faedah:

  • Memori asas dilepaskan kepada pemungut sampah.
  • Kepingan akan berkelakuan sebagai kepingan kosong dengan kapasiti sifar dan panjang sifar.
  • Sebarang alias kepada kepingan asal tidak akan menunjuk lagi kepada memori asas yang sama.

Adalah penting untuk ambil perhatian bahawa menukar kapasiti kepingan kepada sifar tidak mengosongkan kepingan atau melepaskan memori asas. Walau bagaimanapun, menetapkan hirisan kepada sifar berkesan mengalih keluar sebarang memori yang diperuntukkan dan menetapkan semula hirisan kepada keadaan asalnya.

Atas ialah kandungan terperinci Bagaimanakah cara saya benar-benar mengosongkan kepingan dalam Go dan menuntut semula ingatannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan