Пишу проект на Golang и он стал достаточно большой.
К сожалению заметил не сразу и не могу понять после какой правки, программа начала заполнять оперативку и не освобождать ее. Примерно по 1гб за 2 часа.
Как определить точное место в котором косяк?
Понаблюдайте за количеством горутин. Через 2 часа после запуска программы, когда она нажрёт достаточно памяти, сделайте дамп стека всех горутин. Сразу увидите, каких горутин очень много.
В Go есть утечка goroutine, когда gourotine пишет в канал, из которого никто не читает. Возможно у вас в коде есть какой-то return, который по ошибке выходит из функции? Попробуйте для амортизации поставьте буферы у каналов.