【发布时间】:2010-12-06 21:47:19
【问题描述】:
在这个简单的示例中,节点似乎正在泄漏内存。其他人可以确认吗?
【问题讨论】:
标签: memory-leaks node.js
在这个简单的示例中,节点似乎正在泄漏内存。其他人可以确认吗?
【问题讨论】:
标签: memory-leaks node.js
我不小心为每个已完成的请求发送了 2 个新请求。一个结束,一个结束。
【讨论】:
我在0.3.1,GC在这里正常启动。
使用node --trace_gc test.js,这几乎没有达到5mb:
ivo@ivo:~/Desktop$ node --trace_gc test.js
Scavenge 0.9 -> 1.0 MB, 1 ms.
Scavenge 1.9 -> 1.8 MB, 0 ms.
Scavenge 2.6 -> 1.9 MB, 1 ms.
Mark-sweep 2.9 -> 1.8 MB, 6 ms.
Scavenge 2.8 -> 1.8 MB, 0 ms.
Scavenge 2.9 -> 1.9 MB, 0 ms.
另一个运行:
ivo@ivo:~/Desktop$ node --trace_gc test.js
Scavenge 0.9 -> 1.0 MB, 1 ms.
Scavenge 1.9 -> 1.8 MB, 0 ms.
Scavenge 2.6 -> 1.9 MB, 1 ms.
Mark-sweep 1.9 -> 1.8 MB, 4 ms.
Mark-sweep 1.8 -> 1.7 MB, 3 ms.
Mark-compact 1.7 -> 1.7 MB, 11 ms.
Scavenge 2.3 -> 1.8 MB, 0 ms.
Scavenge 2.3 -> 1.8 MB, 0 ms.
Scavenge 2.3 -> 1.8 MB, 0 ms.
Scavenge 2.0 -> 1.9 MB, 0 ms.
Mark-sweep 1.9 -> 1.6 MB, 3 ms.
Mark-compact 1.6 -> 1.6 MB, 10 ms.
V8 在 GC 方面非常智能,您可能需要注意的一件事是您不会在全局列表等中推送一些引用,因为这将使该引用中的任何内容保持活动状态。
如果您确实要处理大量数据,请考虑使用 Buffer 并即时重新分配,尤其是在 0.3.x 缓冲区非常快的情况下。
【讨论】: