В недавней проблеме с утечкой памяти мне пришлось немного глубже погрузиться в console.log(..) и сделать несколько интересных открытий.
Консольный вывод не отображается в инструментах профилирования
Весь вывод из console.log(..) хранится в одном и том же процессе узла, он учитывает использование памяти процессом, но вы не можете увидеть, сколько используется в инструментах профилирования узла. Поскольку узел использует консоль TTY по умолчанию на компьютерах с Unix. Единственный способ увидеть, сколько памяти он использует, — это использовать process.memoryUsage()
или монитор активности, чтобы увидеть, сколько памяти он действительно использует.
Насколько я мог видеть, на машинах с Windows это не так, но я не углублялся в это.
Поэтому, если вы много входите в консоль из своего приложения, у вас может быть большая и необъяснимая утечка памяти.
console.clear() не очищает
Мне потребовалось некоторое время, чтобы понять это, но console.clear не освобождает память (изначально). Если вы посмотрите на код для console.clear()
, они ничего не выпускают, они только перемещают курсор обратно на 0,0. Таким образом, выход остается прежним. Он удаляет все только после того, как вы попытаетесь что-то написать в ответ console.log('RELEASE')
.
Основной урок
НИКОГДА НЕ ИСПОЛЬЗУЙТЕ КОНСОЛЬ ДЛЯ ВХОДА (если у вас нет альтернативы)
Источник: