Как правильно утилизировать буфер в JavaScript - PullRequest
4 голосов
/ 14 марта 2019

Этот простой код вызывает сбой приложения при нехватке памяти:

var buf;
console.log(process.memoryUsage())
for(i=0; i<10000000; i++){
    buf = Buffer.alloc(1024)
    buf.clear
    delete buf
    buf = null
}
console.log(process.memoryUsage())

Итак, как правильно утилизировать буфер, чтобы его можно было повторно использовать? Не уверен, что удаление или удаление являются подходящими методами, но как тогда? Спасибо

1 Ответ

5 голосов
/ 19 марта 2019

Как упомянуто в одном из ответов, в буфере отсутствует метод clear() для отмены выделения / освобождения выделенной буферной памяти.Вы можете запросить узла gc для освобождения неиспользуемой памяти, вызвав метод gc (), но эта опция доступна только тогда, когда ваше приложение запускается с флагом - expose-gc .

'use strict';
let buf;
console.log(process.memoryUsage());
for (let i = 0; i < 10000000; i++) {

    buf = Buffer.alloc(1024);
    // Do your stuff
}

if (global.gc) {
    console.log('Requesting gc to free-up unsed memory');
    global.gc(); // Synchronous call, may take longer time and further execution get blocked till it finishes the execution
}

console.log(process.memoryUsage());

Ссылки: Как запросить сборщик мусора в файле node.js для запуска?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...