Минимальный тестовый код в Windows 7 и узле 10.8.0:
for (let i = 0; ; ++i) {
let buf = new Buffer("1111111111111111111");
buf = null;
if (i % 10000 === 0) {
global.gc();
console.log(process.memoryUsage().rss);
}
}
, а затем запуск с
node --expose-gc .\index.js
Я вижу, что rss продолжает увеличиваться, а память выделяется набуфер не освобождается. Если я просто выделю буфер с размером, например
let buf = new Buffer(10000);
GC будет работать. Почему gc не работает в тестовом коде?
Дополнительный вопрос: кажется, что проблема не существует в версии Node Mac OS, возможно, это ошибка в версии Windows?