繁体   English   中英

如何在Node.js中存储100GB的内存

[英]How to store 100GB in memory in Node.js

假设你有一台拥有200GB + RAM的机器,是否可以在应用程序中存储那么多数据?

我正在运行一个测试,创建一个嵌套对象,如下所示:

{
  id1: {
    val1: 123,
    val2: 456,
    v...
  },
  id2: {
    val1: 234,
    val2: 567,
    ...
  }
  ...
}

我将使用--max-old-space-size=200000运行它并运行正常,直到对象大小约为50GB,然后崩溃并出现错误: FATAL ERROR: NewSpace::Rebalance Allocation failed - process out of memory每次FATAL ERROR: NewSpace::Rebalance Allocation failed - process out of memory时间。

我已经尝试手动强制垃圾收集,将它分成更小的对象等,没有运气。

你没有。 使用流。 以下我觉得对流是什么以及如何使用它们的写得非常好。 我不时地提到它: https//medium.freecodecamp.org/node-js-streams-everything-you-need-to-know-c9141306be93

对于某些给定的对象,这将使您的内存占用率从“200GB”降低到可能少于几MB的内存使用量。

Node对于非常大的调用并不是很好,我很惊讶你已经一直到50GB,我通常会在尝试加载太多时看到4-8GB左右的崩溃。


如果您正在处理管道[1],如果您正在输入/导出到文件,请使用行分隔的JSON :( \\n表示行结束标记)

{"id":"id01',"value":{...}}\n
{"id":"id01',"value":{...}}\n

您可以使用已经可用的行/行过滤器读取来读取/写入流。


或者,如果您需要以交互方式获取此数据,最好使用Redis等本地数据库。

[1] https://medium.freecodecamp.org/node-js-streams-everything-you-need-to-know-c9141306be93

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM