现在我正在编码解压缩文件,我在https://github.com/pierrec/node-lz4中引用 LZ4.decodeBlock 。但我需要读取一个切片并使用循环解压缩。我编码如下。它工作正常。但它使用了大量的内存。就像每个带有新的 64K 缓冲区的切片一样。
decipher.on('readable', ()=> {
while (1) {
var body = decipher.read(len);
if (body) {
var uncompressed = new Buffer(64*1024);
var uncompressedSize = lz4.decodeBlock(body, uncompressed);
var uncompressed_end = uncompressed.slice(0, uncompressedSize);
outStream.write(uncompressed_end);
} else {
break;
}
} else {
break;
}
}
});
}
然后我想优化内存使用,我修改如下。它将使用更少的内存。但它不能解压到与原始文件相同的内容。
var uncompressed = new Buffer(64*1024);
decipher.on('readable', ()=> {
while (1) {
var body = decipher.read(len);
if (body) {
var uncompressedSize = lz4.decodeBlock(body, uncompressed);
var uncompressed_end = uncompressed.slice(0, uncompressedSize);
outStream.write(uncompressed_end);
} else {
break;
}
} else {
break;
}
}
});
}
那么我应该如何使用缓冲区优化内存使用呢?