node/test/parallel/test-v8-serialize-leak.js
liuxingbaoyu cacff07e75 src: fix memory leak for v8.serialize
When Buffer::New passes in existing data,
it cannot be garbage collected in js synchronous execution.

Fixes: https://github.com/nodejs/node/issues/40828
Refs: https://github.com/nodejs/node/issues/38300

PR-URL: https://github.com/nodejs/node/pull/42695
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
2022-05-10 09:13:16 -03:00

22 lines
463 B
JavaScript

'use strict';
// Flags: --expose-gc
require('../common');
const v8 = require('v8');
const assert = require('assert');
const before = process.memoryUsage.rss();
for (let i = 0; i < 1000000; i++) {
v8.serialize('');
}
global.gc();
const after = process.memoryUsage.rss();
if (process.config.variables.asan) {
assert(after < before * 10, `asan: before=${before} after=${after}`);
} else {
assert(after < before * 2, `before=${before} after=${after}`);
}