【问题标题】:Clean memory after importing module in nodejs在nodejs中导入模块后清理内存
【发布时间】: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


    【解决方案1】:

    您是否尝试过让垃圾收集器运行?

    if (global.gc){
      global.gc();
    }
    

    为此,您需要使用--expose-gc 启动节点进程

    node --expose-gc index.js
    

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2021-11-28
      • 2018-11-08
      • 2017-10-19
      • 1970-01-01
      • 2021-12-08
      • 2023-02-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多