Привет!



Столкнулись с интересным кейсом, для меня это просто утечка памяти года - JSON.parse(undefined)



Этот простой код в Node.js до 18 версии вызывает небольшую утечку памяти, примерно 128 байт на вызов, которые не очищаются с помощью Garbage Collector.



Проблема описана в этом issue, и как будто бы исправлена в актуальных мажорках ноды, но фактически утечка присутствует в 14.x и 16.x версиях, по результатам наших проверок.



Почему утечка года:

- она маленькая и медленная, нужны хорошие нагрузки что бы была заметна

- совершенно неожиданная при профилировании (просто посмотрите на этот "undefined" на скриншоте, я просто игнорировал его когда встречал)

- очень легко воспроизвести, у нас оказалось несколько мест где парсим те cookies, которые часто undefined



Очень рад работать с такими крутыми коллегами, один из которых смог это раскопать)



Основной причиной, почему начали смотреть утечки памяти, оказался другой код, связанный с LRU кэшами, но в любом случае это хороший повод обновить Node.js