现在我正在编译解压缩文件,我在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;
}
}
});
}
那么我应该如何利用缓冲区来优化内存使用?