Spec-Zone.ru › Go

Арена пакета arena

Пакет arena позволяет выделять память для коллекции значений Go и безопасно освобождать её вручную целиком. Эта функциональность предназначена для повышения эффективности: ручное освобождение памяти до сборки мусора откладывает её цикл. Чем реже запускаются циклы, тем реже возникают затраты ЦП на сборщик мусора.

Основная часть функциональности этого пакета реализована в типе Arena. Арены выделяют большие блоки памяти для значений Go, поэтому они, вероятно, неэффективны для выделения небольшого количества памяти под небольшие значения Go. Лучше всего использовать их для массового выделения — порядка MiB памяти за одно использование.

Обратите внимание: эта ограниченная форма ручного выделения памяти допускает возникновение ошибок use-after-free при работе с обычными значениями Go. Пакет ограничивает влияние таких ошибок, запрещая повторное использование освобождённых областей памяти до тех пор, пока сборщик мусора не сможет определить, что это безопасно. Как правило, ошибка use-after-free приводит к сбою и полезному сообщению об ошибке, однако пакет оставляет за собой право не вызывать сбой при обращении к освобождённой памяти. Это означает, что допустимая реализация пакета может выделять всю память обычным для среды выполнения способом; кроме того, пакет оставляет за собой право иногда поступать так с некоторыми значениями Go.

© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/arena/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API