nodejs中的缓冲区大小

// node v0.5.6 //

我假设nodejs可以在nodejs堆之外分配的最大缓冲区大小受可用系统内存量的限制。 虽然我有几个自由内存的演出,我似乎甚至没有崩溃节点接近极限。

致命错误: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(); 

它在此块的节点库中的Buffer.js的第235行上崩溃:

 if (this.length > Buffer.poolSize) { // Big buffer, just alloc one. this.parent = new SlowBuffer(this.length); //crash here this.offset = 0; 

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

你的循环将运行,直到cur == bcast,所以最后writeUInt32LE将写入一个超过缓冲区长度的数字。 改变你的循环比较“cur <bcast”。