如何在 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