2015-09-10 39 views
0

获得最大缓冲区大小在Node.js的0.12.x缓冲区的最大尺寸被分配内存,它的尺寸可以与被限制了:我怎样才能在Node.js的

require('smalloc').kMaxLength; 

的实际值。旧版本V8中的kMaxLengthhardcoded,等于0x3fffffff

问题是在io.js> = 3.x(包括node.js 4.x)中没有smalloc模块。有人提到Buffer的实现是在V8 4.4.x中重写的。

所以,我的问题是:有没有办法在io.js> = 3.x中获得Buffer(和/或可分配内存)的最大大小?

+0

的使用这种感觉就像一个[XY问题声明】(HTTP://元。 stackexchange.com/questions/66377/what-is-the-xy-problem),你需要知道最大缓冲区长度? (因为Node可以处理数据流,没有理由创建一个超过它的缓冲区) –

+0

我想创建一个文件系统模拟失败的文件太大(就像真正的“fs”模块一样)。 –

回答

2

此文件“计算”(https://github.com/v8/v8-git-mirror/blob/4.4.63/src/objects.h)对于外部阵列也具有固定的常量。

4642 // Maximal acceptable length for an external array. 
4643 static const int kMaxLength = 0x3fffffff; 

编辑:

看起来你可以使用 要求( '缓冲')kMaxLength;

这仍然是在4.0

b625ab4242在3.0的变化和 - 缓冲:修复kMaxLength(特雷弗·诺里斯)#2003