最近,我安装了https://github.com/lloyd/node-memwatch进行开发,以研究 GC 是如何与我的程序交互的。
我已经绑定了事件“stat”,arthor 声明事件是在执行 GC 时触发的。
我发现当脚本负载很高时。“stat”事件不会被触发。我不确定这是否意味着没有执行 GC,但这表明 GC 可能没有触发。
在我的生产服务器中,全天的负载甚至更高。我很确定GC没有机会执行。内存使用量没有机会减少。这就像内存泄漏。
- 我的观察正确吗?连续高负载时GC不能执行吗?
- 如果是这样,我应该使用暴露的GC接口来强制GC吗?
- GC 阻塞了吗?我应该更频繁地执行GC,以便GC不会因为每次GC而长时间阻塞吗?
我知道手动 GC 不是一个好主意(在 node.js 中有人反对手动 GC 的想法,但我找不到参考链接),但我看到内存使用量在不断增加。确实需要解决。