HTTP请求的节点内存使用情况
Node memory usage with HTTP requests
有人能解释一下为什么下面的代码会导致节点的内存使用量激增而永远无法恢复吗?
我理解为什么它会导致内存使用率飙升,但它永远不会下降。
我正在做一些我认为不必要的事情(将变量设置为null
),以引起垃圾收集,但这并没有什么区别。
我也尝试过使用--expose-gc
和global.gc()
,但没有帮助。
我是在某个地方遗漏了一个参考资料,还是有更大的问题?
var https = require("https")
var i = 0;
while(i < 200) {
var req = https.request({
host: 'host.com',
path: '/endpoint',
method: 'POST',
headers: {
'Content-Type': 'text/csv',
'Authorization': 'Basic abc123'
}
}, function(res) { res.resume(); res=null; });
req.data = "a,b,c";
req.write(req.data);
req.end();
req = null;
i++;
}
Node GC是"懒惰的",它倾向于将内存保留在他的"旧空间"中,直到达到硬限制(在64位env上约为1.4/1.5Gb)。在我们的情况下(大量http请求),内存越来越高,直到达到这个阈值,然后突然回到200Mb。
您可以使用--trace-gc
和--trace-gc-verbose
来查看所使用的内存类型。您可以将--max-old-space-size
设置为强制节点具有小于1.4Gb的限制,从而更频繁地触发GC(这可能会影响性能,完整的GC是同步的并冻结线程)。
相关文章:
- 在Widget代码中没有jQuery的情况下,用光标图像从左滑动到右
- 对于如何在没有modernizr的情况下用边界半径的功能检测检查来替换我的旧浏览器检查
- 如何在不使用插件的情况下用程序记录浏览器操作
- MIDI Javascript:如何在没有库的情况下用Javascript生成单个MIDI音符
- 你为什么要用!!在这种情况下的表达式中?AngularJS API.
- Javascript;Fabric-js:在这种情况下,如何在函数外调用对象
- 如何在没有jQuery的情况下用JavaScript打开JSON文件
- 用javascript计算内存使用情况
- 在没有一个表单的情况下用ENTER阻止提交
- 在不使用jQuery的情况下,用JavaScript将表转换为数组
- 如何在没有空函数的情况下用javascript实现对象组合
- 如何在没有for循环的情况下用JavaScript显示数组
- 如何在不使用JSON.stringify或JSON.parse的情况下用javascript克隆数组
- 在没有赋值的情况下用var在JavaScript中声明变量会消耗内存吗
- 如何在不刷新的情况下用javascript打开或关闭掩码/隐藏URL参数
- 在不影响其他元素的情况下,用Vue.js切换一个元素的类开/关最简单的方法是什么?
- 用2种情况找到一些变量的正确方法
- 如何在不影响其他模态的情况下用CSS改变模态的宽度?
- 为什么变量在一种情况下用单引号发送,而在另一种情况下不加引号
- 在Jquery's .unload已弃用的情况下,取消提交按钮文本设置的正确方法