2017-07-22 20 views
-1

我使用require来导入包含长阵列的模块。节点要求:卸载模块成功,但内存使用率仍然很高

使用后,我成功清除缓存并删除删除阵列,但在每个新的所需模块上,我的内存使用量不断增加。

我该如何预防?

**** EDITED ***** 代码添加

Array1.map(function(val,index){ 


      var requiredModuke = require("../moduleLocation/"+index) 

      var path = resolve.sync("../moduleLocation/"+index); 
      if (path){ 
      console.log("Path to module found:", path); 
      } 


       setTimeout(function(){ 


       delete require.cache[require.resolve(path)] 

       var numOfModulesLoaded= Object.keys(require.cache).length 

       console.log(numOfModulesLoaded) 



       },index*8000); 


    }) 
+0

你必须向我们展示了相关代码(你认为你要删除),并说明您究竟是如何测量内存使用情况。堆快照是查看Javascript解释器实际使用多少内存的最有用的方法,它还可以告诉你堆中的主要对象是什么。在查看全部进程内存时,无法分辨出实际使用中的实际内容与从解释器中释放出来的内容,并准备在需要时进行重新分配。有许多方式让人们对他们所看到的或在哪里被愚弄这个问题没有正确测量。 – jfriend00

+0

添加代码,使用活动监视器进行监视。此外,如果我离开这超过50循环运行,节点退出错误致命错误:CALL_AND_RETRY_LAST分配失败 - JavaScript堆堆内存不足 –

回答

1

node.js的缓存模块,你需要从高速缓存,以释放内存中删除。

delete require.cache[require.resolve('ModulePath/ModuleName')] 

检查所有缓存/加载的模块

console.log(require.cache); 
+0

谢谢,但我已经这样做了,我添加了代码和stil内存不足 –