когда якобы приложение потребляет огромное количество виртуальной памяти, но при этом утечек нет?
это по-моему нормальная ситуация, go резервирует память большими кусками заранее, т.к. это недешевая операция
https://habr.com/ru/company/ruvds/blog/442648/
https://pkg.go.dev/runtime еще можешь поиграться, выделяя память через sbrk
"Много" - это сколько и что значит "потребляет"? Объем реального потребления (резидентная память) - это не то же самое, что и резервирование виртуальной памяти.
40 гб в виртуальной
А максимальный объем RSS при этом каков?
Ничего не означает. Я видел как приложение потребляло несколько Тб виртуальной памяти.
Там в аллокаторе несколько классов размера резервируемой виртуальной памяти, зависящих от текущего RSS и зависимость, как понимаю, хитрая и экспоненциальная. Если проще, то что-то навроде: запросило приложение, скажем, 1 МиБ памяти, а аллокатор зарезервировал 4 ГиБ виртуальной памяти. Запросило приложение 1 ГиБ, а аллокатор зарезервировал уже 1 ТиБ или типа того.
Обсуждают сегодня