如何在 Node.js 中获得最大缓冲区大小
How can I get maximum Buffer size in Node.js
在 Node.js 0.12.x 缓冲区的最大大小受可分配内存的限制,可以通过以下方式获得该大小:
require('smalloc').kMaxLength;
kMaxLength
的实际值在旧版本的V8中是hardcoded,等于0x3fffffff
。
问题是io.js>=3.x(包括node.js4.x)没有smalloc
模块。有人提到 Buffer
实现在 V8 4.4.x.
中被重写
所以,我的问题是:有没有办法在 io.js >= 3.x 中获取缓冲区的最大大小(and/or 可分配内存)?
此文件 "calculated" (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;
编辑:
看起来你可以使用
要求('buffer').kMaxLength;
这是 3.0 中的变化,4.0 中仍然如此
b625ab4242 - buffer: fix usage of kMaxLength (Trevor Norris) #2003
在 Node.js 0.12.x 缓冲区的最大大小受可分配内存的限制,可以通过以下方式获得该大小:
require('smalloc').kMaxLength;
kMaxLength
的实际值在旧版本的V8中是hardcoded,等于0x3fffffff
。
问题是io.js>=3.x(包括node.js4.x)没有smalloc
模块。有人提到 Buffer
实现在 V8 4.4.x.
所以,我的问题是:有没有办法在 io.js >= 3.x 中获取缓冲区的最大大小(and/or 可分配内存)?
此文件 "calculated" (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;
编辑:
看起来你可以使用 要求('buffer').kMaxLength;
这是 3.0 中的变化,4.0 中仍然如此
b625ab4242 - buffer: fix usage of kMaxLength (Trevor Norris) #2003