静态方法:Buffer.allocUnsafeSlow(size)
历史
| 版本 | 变化 |
|---|---|
| v15.0.0 | 对于无效的输入参数,抛出 ERR_INVALID_ARG_VALUE 而不是 ERR_INVALID_OPT_VALUE。 |
| v5.12.0 | 添加于:v5.12.0 |
参数
size<integer> 新Buffer的所需长度。
分配 size 字节的新 Buffer。如果size大于 或小于0,则抛出buffer.constants.MAX_LENGTH 。如果 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。
相关用法
- Node.js Buffer.allocUnsafeSlow()用法及代码示例
- Node.js Buffer.allocUnsafe()用法及代码示例
- Node.js Buffer.allocUnsafe(size)用法及代码示例
- Node.js Buffer.alloc(size[, fill[, encoding]])用法及代码示例
- Node.js Buffer.alloc()用法及代码示例
- Node.js Buffer.fill()用法及代码示例
- Node.js Buffer.writeInt16BE()用法及代码示例
- Node.js Buffer.writeDoubleBE()用法及代码示例
- Node.js Buffer.entries()用法及代码示例
- Node.js Buffer.writeUInt16LE()用法及代码示例
- Node.js Buffer.byteLength()用法及代码示例
- Node.js Buffer.isBuffer()用法及代码示例
- Node.js Buffer.writeUInt32BE()用法及代码示例
- Node.js Buffer.equals()用法及代码示例
- Node.js Buffer.values()用法及代码示例
- Node.js Buffer.isEncoding()用法及代码示例
- Node.js Buffer.isEncoding(encoding)用法及代码示例
- Node.js Buffer.concat(list[, totalLength])用法及代码示例
- Node.js Buffer.subarray()用法及代码示例
- Node.js Buffer.writeDoubleLE()用法及代码示例
- Node.js Buffer.includes()用法及代码示例
- Node.js Buffer.readInt32BE()用法及代码示例
- Node.js Buffer.writeIntLE()用法及代码示例
- Node.js Buffer.from(array)用法及代码示例
- Node.js Buffer.swap16()用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 Buffer.allocUnsafeSlow(size)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
