mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
dca4d84349
With a tight loop the GC may not have enough time to kick in. Try setImmediate() instead. PR-URL: https://github.com/nodejs/node/pull/49573 Refs: https://github.com/nodejs/node/issues/49572 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
43 lines
1000 B
JavaScript
43 lines
1000 B
JavaScript
// Flags: --experimental-shadow-realm --expose-internals
|
|
'use strict';
|
|
require('../common');
|
|
const { validateSnapshotNodes } = require('../common/heap');
|
|
|
|
validateSnapshotNodes('Node / ShadowRealm', []);
|
|
|
|
let realm;
|
|
let counter = 0;
|
|
// Create a bunch of un-referenced ShadowRealms to make sure the heap
|
|
// snapshot can handle it.
|
|
function createRealms() {
|
|
// Use setImmediate to give GC some time to kick in to avoid OOM.
|
|
if (counter++ < 100) {
|
|
realm = new ShadowRealm();
|
|
realm.evaluate('undefined');
|
|
setImmediate(createRealms);
|
|
} else {
|
|
validateHeap();
|
|
// Keep the realm alive.
|
|
realm.evaluate('undefined');
|
|
}
|
|
}
|
|
|
|
function validateHeap() {
|
|
validateSnapshotNodes('Node / Environment', [
|
|
{
|
|
children: [
|
|
{ node_name: 'Node / shadow_realms', edge_name: 'shadow_realms' },
|
|
],
|
|
},
|
|
]);
|
|
validateSnapshotNodes('Node / shadow_realms', [
|
|
{
|
|
children: [
|
|
{ node_name: 'Node / ShadowRealm' },
|
|
],
|
|
},
|
|
]);
|
|
}
|
|
|
|
createRealms();
|