коллекция мусора в срезах Go: подробный анализ
В Go Slice - это динамический массив, который ссылается на основной массив. При работе с ломтиками крайне важно понять поведение сбора мусора, чтобы избежать потенциальных утечек памяти.
] рассмотреть следующую реализацию очереди, используя срез:
func PopFront(q *[]string) string { r := (*q)[0] *q = (*q)[1:len(*q)] return r } func PushBack(q *[]string, a string) { *q = append(*q, a) }
В данном случае, когда элемент выскочивается спереди, срез поднимается, чтобы исключить всплывающий элемент. В то время как сама ломтик собирается мусор, если он становится недоступным, базовый массив, содержащий элементы, не сразу освобожден. В случае среза, если, по крайней мере, один срез, ссылаясь на один и тот же базовый массив, все еще существует, или если массив удерживается другой переменной, базовый массив не будет собран мусором.
, чтобы обеспечить эффективное управление память ненужное удержание памяти.
избегайте разрезания массива несколько раз для создания избыточных ссылок на базовый массив. Code.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3