当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js Buffer.allocUnsafeSlow(size)用法及代码示例


静态方法:Buffer.allocUnsafeSlow(size)

历史
版本变化
v15.0.0

对于无效的输入参数,抛出 ERR_INVALID_ARG_VALUE 而不是 ERR_INVALID_OPT_VALUE。

v5.12.0

添加于:v5.12.0


参数

分配 size 字节的新 Buffer。如果size大于 buffer.constants.MAX_LENGTH 或小于0,则抛出 ERR_INVALID_ARG_VALUE 。如果 size 为 0,则创建零长度 Buffer

以这种方式创建的Buffer 实例的底层内存未初始化。新创建的Buffer 的内容未知,可能包含敏感数据。使用 buf.fill(0) 将此类 Buffer 实例初始化为零。

当使用 Buffer.allocUnsafe() 分配新的 Buffer 实例时,4 KiB 下的分配是从单个预分配的 Buffer 中分割出来的。这允许应用程序避免创建许多单独分配的Buffer 实例的垃圾收集开销。这种方法无需跟踪和清理尽可能多的单个ArrayBuffer 对象,从而提高了性能和内存使用率。

但是,在开发人员可能需要在不确定的时间内从池中保留一小块内存的情况下,使用 Buffer.allocUnsafeSlow() 创建 un-pooled Buffer 实例然后复制出相关位。

import { Buffer } from 'node:buffer';

// Need to keep around a few small chunks of memory.
const store = [];

socket.on('readable', () => {
  let data;
  while (null !== (data = readable.read())) {
    // Allocate for retained data.
    const sb = Buffer.allocUnsafeSlow(10);

    // Copy the data into the new allocation.
    data.copy(sb, 0, 0, 10);

    store.push(sb);
  }
});const { Buffer } = require('node:buffer');

// Need to keep around a few small chunks of memory.
const store = [];

socket.on('readable', () => {
  let data;
  while (null !== (data = readable.read())) {
    // Allocate for retained data.
    const sb = Buffer.allocUnsafeSlow(10);

    // Copy the data into the new allocation.
    data.copy(sb, 0, 0, 10);

    store.push(sb);
  }
});

如果 size 不是数字,则会抛出 TypeError

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 Buffer.allocUnsafeSlow(size)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。