Почему Go-вебсервер есть так много памяти и не освобождает ее?
После сборки мусора память не возвращается в ОС сразу, потому что если нагрузка снова резко пойдёт, будет быстрее переиспользовать уже аллоцированную приложением память, чем просить её у ОС снова.
Если нагрузка будет долго отсутствовать, гошка должна в конце концов отдать память в ОС.
Это можно сделать вручную через debug.FreeOSMemory()
Как уже выше написано - действительно память отдается не сразу, а по возможности переиспользуется.
Т.е. при интенсивной работе расти уже не будет, а если долго не понадобится - будет освобождаться.
Можно вручную вызвать сборку мусора - runtime.GC()