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