-1

我正在生成一些随机数据以便将它们存储在 mongodb 中。通过生成大量数据并将它们首先存储在数组中(用于将生成与插入分离以进行测量),会发生内存不足错误。

编码:

for (i=0; i<amount; i++)
{                                       
doc = {starttime:get_datetime(), endtime:get_datetime(), tos: null, sourceport: get_port(), sourcehost: get_ip(), duration: get_duration() , destinationhost: get_ip(), destinationport: get_port(), protocol: get_protocol(), flags: get_flags(), packets: get_packets()};
docs[i]=doc;
}

我选择了例如金额 = 10.000.000。

所有功能看起来像:

function get_flags( )              
  {                                   
     var tmpstring= Math.floor((Math.random()*8)+1); 
     return tmpstring;         
  }

这样的错误是如何发生的?我该如何解决这个问题?

4

1 回答 1

1

这样的错误是如何发生的?docs 数组需要内存,因此添加 1000 万个条目意味着使用(例如)100x1000 万字节(如果每个 doc 条目是 100 字节),即 1GB 内存。

建议的解决方案:也许尝试以 1000 个条目为一组运行生成插入循环。所以生成 1000 个文档,保存它们并为接下来的 1000 个文档重复使用该数组,依此类推。

于 2012-12-22T13:00:46.430 回答