Javascript nodejs中的缓冲区大小

Javascript nodejs中的缓冲区大小,javascript,node.js,Javascript,Node.js,//节点v0.5.6// 我假设nodejs可以在nodejs堆之外分配的最大缓冲区大小受到可用系统内存量的限制。虽然我有几Gig的可用内存,但我似乎无法在不破坏节点的情况下接近该限制 致命错误:JS分配失败-进程内存不足 function bigArray(){ // each ip could be 10 digits long, therefore, // 10 * (bcast-cur) = size of Buffer. // does that also mean s

//节点v0.5.6//

我假设nodejs可以在nodejs堆之外分配的最大缓冲区大小受到可用系统内存量的限制。虽然我有几Gig的可用内存,但我似乎无法在不破坏节点的情况下接近该限制

致命错误:JS分配失败-进程内存不足

function bigArray(){
  // each ip could be 10 digits long, therefore,
  // 10 * (bcast-cur) = size of Buffer.  
  // does that also mean size in bytes? 
  var cur = 167772160;
  var bcast = 184549375;
  var addresses = new Buffer((bcast-cur)*10);
  var offset = 0;
  while (cur <= bcast){
    cur += 1;
    addresses.writeUInt32LE(cur,offset);
    offset+=10;
  }
  return addresses;
};
var ba = bigArray();

不幸的是,您收到的错误消息有点误导,但是您有一个缓冲区溢出错误


循环将一直运行到cur==bcast,因此最后一个writeUInt32LE将写入一个超过缓冲区长度的数字。将循环比较更改为“curwow。我花了一整天的时间。我也花了一点时间才看到。你的索引有点混乱。
if (this.length > Buffer.poolSize) {
  // Big buffer, just alloc one.
  this.parent = new SlowBuffer(this.length); //crash here
  this.offset = 0;