【发布时间】:2022-10-19 21:57:30
【问题描述】:
我正在尝试清除在 nodeJs 中导入模块后使用的内存(节点版本:v14.17.5)。获取与process.memoryUsage() 一起使用的内存。我尝试了一些我在互联网上找到的不同的东西,但我无法回到导入之前使用的堆大小。
这是我用于测试的一个非常简单的 sn-p:
console.log("hello world")
logMemoryUsage("before express import");
let express = require("express");
logMemoryUsage("after express import");
////////////////////// try a couple of things
delete require.cache['express']
require.cache = {};
express = null;
for (const path in require.cache) {
delete require.cache[path]
}
delete express;
delete require.cache[require.resolve('./node_modules/express/index.js')]
delete require.cache[require.resolve('express')]
//////////////////////
logMemoryUsage("after clear express");
function logMemoryUsage(msg) {
const used = process.memoryUsage();
let l = "";
for (let key in used) {
l += `${key} ${Math.round((used[key] / 1024 / 1024) * 100) / 100} MB, `;
}
console.log(`MEMORY_USAGE ${msg} : ${l}`);
}
我得到以下输出:
hello world
MEMORY_USAGE before express import : rss 19.03 MB, heapTotal 4.77 MB, heapUsed 2.95 MB, external 1.03 MB, arrayBuffers 0.01 MB,
MEMORY_USAGE after express import : rss 28.49 MB, heapTotal 14.83 MB, heapUsed 5.96 MB, external 1.32 MB, arrayBuffers 0.03 MB,
MEMORY_USAGE after clear express : rss 28.5 MB, heapTotal 14.83 MB, heapUsed 5.97 MB, external 1.32 MB, arrayBuffers 0.03 MB,
我一定错过了一些非常微不足道的事情,但我看不出是什么......提前感谢您的帮助!
【问题讨论】:
标签: javascript node.js memory-leaks