Допустим, как-то так:
let buffer = Buffer.from(..........);
while (... какое-то условие ...) {
let bufferPart = buffer.slice(0, N); // отрезали первые N байт буфера
doSomething(bufferPart); // сделали что-то с этим фрагментом
buffer = buffer.slice(N, buffer.length); // укоротили буфер, выкинув начальные N байт
}
При данном подходе исходный буфер будет жить до тех пор, пока не закончатся ссылки на каждый slice на него (даже если на оригинал больше нет ссылок), после этого он будет отмечен на удаление сборщиком мусора?