我正在使用清晰的图像处理模块来调整图像大小并在UI上呈现它。
app.get('/api/preview-small/:filename',(req,res)=>{
let filename = req.params.filename;
sharp('files/' + filename)
.resize(200, 200, {
fit: sharp.fit.inside,
withoutEnlargement: true
})
.toFormat('jpeg')
.toBuffer()
.then(function(outputBuffer) {
res.writeHead('200',{"Content-Type":"image/jpeg"});
res.write(outputBuffer);
res.end();
});
});
我在单板计算机Rock64上运行代码,内存为1 GB。当我运行Linux htop
命令并监视内存利用率时,我可以看到每次调用nodejs应用程序后内存使用率都会以指数方式从10%增加到60%,并且它永远不会降低。
虽然它没有给运行应用程序带来任何问题,但我唯一担心的是内存使用率没有下降,即使应用程序没有运行,我也不确定如果此应用程序连续运行,这最终是否会导致应用程序崩溃。
或者,如果我将类似的代码片段移动到云端,即使它没有运行,它也会占用内存吗?
任何使用尖锐模块面临类似问题的人或者这是node.js的已知问题。我们是否有办法清除/清除内存或节点是否进行垃圾收集?
任何帮助表示赞赏。谢谢
sharp内置了一些内存调试内容:
http://sharp.dimens.io/en/stable/api-utility/#cache
您可以控制libvips缓存,并获取有关资源使用情况的统计信息。
节点版本对内存行为有很强的影响。这个问题在尖锐的问题跟踪器上进行了很多讨论,例如:
https://github.com/lovell/sharp/issues/429
也许: