mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 23:52:40 +00:00

Invoke the free callback for a given `Buffer` if it was created with one, and mark the underlying `ArrayBuffer` as detached. This makes sure that the memory is released e.g. when addons inside Workers create such `Buffer`s. PR-URL: https://github.com/nodejs/node/pull/30551 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
18 lines
617 B
JavaScript
18 lines
617 B
JavaScript
'use strict';
|
|
const common = require('../../common');
|
|
const path = require('path');
|
|
const assert = require('assert');
|
|
const { Worker } = require('worker_threads');
|
|
const binding = path.resolve(__dirname, `./build/${common.buildType}/binding`);
|
|
const { getFreeCallCount } = require(binding);
|
|
|
|
// Test that buffers allocated with a free callback through our APIs are
|
|
// released when a Worker owning it exits.
|
|
|
|
const w = new Worker(`require(${JSON.stringify(binding)})`, { eval: true });
|
|
|
|
assert.strictEqual(getFreeCallCount(), 0);
|
|
w.on('exit', common.mustCall(() => {
|
|
assert.strictEqual(getFreeCallCount(), 1);
|
|
}));
|