В настоящее время я пытаюсь отладить неприятную утечку памяти в нашем коде Go.
Что я знаю:
- куда идет память (
pprofс флагом-base) - почему выделяется новая память (функция "переподключиться" в нашем коде)
- количество горутин не растет (
runtime.NumGoroutine()) - если я сделаю
object = nil, память будет собирать мусор (хорошо! но теперь у меня есть гонки данных с другими подпрограммами, которые используют этот объект)
Что я не знаю:
- почему новая память не собирается сборщиком мусора. для этого мне нужно знать, кто имеет ссылку на объект.
Спасибо за ваше время и за любые советы!