使用stream减lessnodejs应用程序内存?

这可能是一个新手问题,但我search,找不到满意的答案。

我的node.js应用程序似乎消耗了大量的内存。 每个进程消耗约100MB。 我听说nodejs本身每个进程有大约30MB的内存空间。

该应用程序是一个JSON API,由MongoDB支持。 在一些情况下,一个API请求会导致很多数据库请求,主要是填充子关系。 一个典型的查询是这样的:(1)根据查询条件获取一个objectId数组,并(2)迭代每个objectId,并发出一个查询到数据库来填充数据(一些调用水合)。

代码大量使用async.js。 我试图分析内存使用情况,似乎async.js使用大量的内存,但没有内存泄漏的迹象。 async.js的作者也出来了一个stream库highland.js( http://highlandjs.org/ )。 我是新的nodejsstream,我很好奇,如果这是一个可能的工具来取代async.js? 该网站似乎提到underscore但我主要使用async.js进行asynchronous处理。

谢谢!

tldr: 是的,使用stream可能会减less你的内存占用。 处理stream时,您一次处理大量的数据。 另一种方法是事先将所有的数据加载到String,Buffer,然后进行处理。

但是,您应该注意,100MB对于一个节点进程来说并不大。 Node / v8假设你将有大约1.5 GB的工作。 一个微小的应用程序可能是128 MB,一个小的256,中等512. 1 GB是一个非常大的节点进程,在这一点上,你应该把你的应用程序分成更小的部分: