Использование памяти в Go можно измерить несколькими способами:
runtime.MemStats: Предоставляет snapshot статистики использования памяти, включая размер кучи, количество объектов, сборки мусора и т.д. Полезен для получения общего представления о распределении памяти.
Профайлер pprof: Мощный инструмент для анализа производительности и использования ресурсов, включая память. Позволяет собирать профили использования кучи в разные моменты времени и анализировать их для выявления узких мест и утечек памяти.
debug.FreeOSMemory(): Принудительно возвращает память операционной системе. Может косвенно помочь понять, сколько памяти удерживает Go рантайм.
pprof (net/http/pprof) — это пакет в стандартной библиотеке Go, который интегрируется с профайлером pprof из пакета runtime/pprof. Он предоставляет HTTP-интерфейсы для сбора профилей различных ресурсов, включая CPU, кучу (память), блокировки, goroutine и мьютексы.
Чтобы использовать его:
net/http/pprof./debug/pprof/) для доступа к профилям.go tool pprof для анализа собранных данных.Пример использования runtime.MemStats:
go
Пример использования pprof в HTTP-сервере:
go
После запуска этого кода можно перейти по адресу http://localhost:6060/debug/pprof/ и получить доступ к различным профилям. Для анализа кучи можно воспользоваться go tool pprof http://localhost:6060/debug/pprof/heap.