【问题标题】:Does node.js 0.2.5 leak memory?node.js 0.2.5 会泄漏内存吗?
【发布时间】:2010-12-06 21:47:19
【问题描述】:

在这个简单的示例中,节点似乎正在泄漏内存。其他人可以确认吗?

https://gist.github.com/a8eadd54d1058bcda796

【问题讨论】:

    标签: memory-leaks node.js


    【解决方案1】:

    我不小心为每个已完成的请求发送了 2 个新请求。一个结束,一个结束。

    【讨论】:

    • 您应该将此标记为已接受的答案,即使它是您自己的。
    【解决方案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 缓冲区非常快的情况下。

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多