2019-02-07 21:18:25 +01:00
|
|
|
// Flags: --expose-internals --expose-gc
|
|
|
|
'use strict';
|
2024-08-13 18:28:21 +08:00
|
|
|
require('../common');
|
|
|
|
const { gcUntil } = require('../common/gc');
|
2019-02-07 21:18:25 +01:00
|
|
|
const assert = require('assert');
|
2023-08-07 16:28:56 +02:00
|
|
|
const { WeakReference } = require('internal/util');
|
2019-02-07 21:18:25 +01:00
|
|
|
|
|
|
|
let obj = { hello: 'world' };
|
|
|
|
const ref = new WeakReference(obj);
|
|
|
|
assert.strictEqual(ref.get(), obj);
|
|
|
|
|
2023-08-07 16:24:06 +02:00
|
|
|
async function main() {
|
2019-02-07 21:18:25 +01:00
|
|
|
obj = null;
|
2024-08-13 18:28:21 +08:00
|
|
|
await gcUntil(
|
2023-08-07 16:24:06 +02:00
|
|
|
'Reference is garbage collected',
|
|
|
|
() => ref.get() === undefined);
|
|
|
|
}
|
2019-02-07 21:18:25 +01:00
|
|
|
|
2023-08-07 16:24:06 +02:00
|
|
|
main();
|