知识共享许可协议
本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。

Node.js v4.2.4 手册 & 文档


Smalloc#

稳定度: 1 - 实验性

smalloc.alloc(length[, receiver][, type])#

  • length {Number} <= smalloc.kMaxLength
  • receiver {Object} 可选,缺省为 new Object
  • type {Enum} 可选,缺省为 Uint8

返回 receiver 及所分配的外部数组数据。如果未传入 receiver 则会创建并返回一个新的 Object。

Buffer 后端为一个只处理外部原始内存的分配的简易分配器所支撑。Smalloc 暴露了该功能。

这可用于创建你自己的类似 Buffer 的类。由于不会设置其它属性,因此使用者需要自行跟踪其它所需信息(比如所分配的长度 length)。

SimpleData.prototype = { /* ... */ };

它只检查 receiver 是否为一个非 Array 的 Object。因此,可以分配外部数组数据的不止纯 Object。

// { [Function allocMe] '0': 0, '1': 0, '2': 0 }

V8 不支持向一个 Array 分配外部数组数据,如果这么做将会抛出异常。

您可以指定您想要的外部数组数据的类型。所有可取的值都已在 smalloc.Types 中列出。使用示例:

// { '0': 0, '1': 0.1, '2': 0.2 }

smalloc.copyOnto(source, sourceStart, dest, destStart, copyLength);#

  • source 分配了外部数组的来源对象
  • sourceStart 从这个位置开始拷贝
  • dest 分配了外部数组的目标对象
  • destStart 拷贝到这个位置
  • copyLength 拷贝的长度

从一个外部数组向另一个拷贝内存。所有参数都是必填,否则将会抛出异常。

// { '0': 4, '1': 6, '2': 2, '3': 3 }

copyOnto 会在内部自动检测分配的长度,因此无需对此给出额外的参数。

smalloc.dispose(obj)#

  • obj 对象

释放已使用 smalloc.alloc 分配到一个对象的内存。

// {}

这对于减轻垃圾回收器的负担有所帮助,但开发者务必小心。难以跟踪的应用程序可能会发生奇怪的错误。

// 将导致:
// Error: source has no external array data

dispose() 不支持 Buffer,传入将会抛出异常。

smalloc.kMaxLength#

最大的分配大小。该值同时也适用于 Buffer 的创建。

smalloc.Types#

外部数组类型的可取值,包含:

  • Int8
  • Uint8
  • Int16
  • Uint16
  • Int32
  • Uint32
  • Float
  • Double
  • Uint8Clamped