javascript / expert
Snippet
Speicherbesitzübertragung in Node.js durch ArrayBuffer-Detachment
ECMAScript ArrayBuffer.prototype.transfer() ermöglicht Zero-Copy-Speicherschiebungen, indem der Quellpuffer abgetrennt und der Besitz auf eine neue ArrayBuffer-Instanz übertragen wird, was teure Speicherallokationen vermeidet.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
const originalBuffer = new ArrayBuffer(1024 * 1024);const view = new Uint8Array(originalBuffer);view[0] = 255;const transferredBuffer = originalBuffer.transfer();console.log(originalBuffer.detached); // trueconsole.log(transferredBuffer.byteLength); // 1048576console.log(new Uint8Array(transferredBuffer)[0]); // 255
nodejs
Erklärung
1
const transferredBuffer = originalBuffer.transfer();
Überträgt den Besitz des Speicherblocks und trennt den ursprünglichen Puffer ohne Datenkopie (Zero-Copy).
2
console.log(originalBuffer.detached); // true
Überprüft, dass der ursprüngliche ArrayBuffer abgetrennt wurde und darauf nicht mehr zugegriffen werden kann.
3
console.log(new Uint8Array(transferredBuffer)[0]); // 255
Greift auf den übertragenen Speicherblock zu, ohne die zugrundeliegenden Bytes zu kopieren.