Skip to content

Commit 485629b

Browse files
authored
fix: make leak-detector more aggressive when running GC (#14526)
1 parent 8cc8dae commit 485629b

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
### Fixes
66

7+
- `[jest-leak-detector]` Make leak-detector more aggressive when running GC ([#14526](https://github.com/jestjs/jest/pull/14526))
8+
79
### Performance
810

911
### Chore & Maintenance

packages/jest-leak-detector/src/__tests__/index.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77

88
import LeakDetector from '../index';
99

10+
jest.mock('v8', () => ({
11+
...(jest.requireActual('v8') as Record<string, unknown>),
12+
getHeapSnapshot: jest.fn(),
13+
}));
14+
1015
const gc = globalThis.gc;
1116

1217
// Some tests override the "gc" value. Let's make sure we roll it back to its

packages/jest-leak-detector/src/index.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/// <reference lib="es2021.WeakRef" />
88

99
import {promisify} from 'util';
10-
import {setFlagsFromString} from 'v8';
10+
import {getHeapSnapshot, setFlagsFromString} from 'v8';
1111
import {runInNewContext} from 'vm';
1212
import {isPrimitive} from 'jest-get-type';
1313
import {format as prettyFormat} from 'pretty-format';
@@ -48,6 +48,17 @@ export default class LeakDetector {
4848
await tick();
4949
}
5050

51+
if (this._isReferenceBeingHeld) {
52+
// triggering a heap snapshot is more aggressive than just `global.gc()`,
53+
// but it's also quite slow, so only do it if we still think we're leaking.
54+
// https://github.com/nodejs/node/pull/48510#issuecomment-1719289759
55+
getHeapSnapshot();
56+
57+
for (let i = 0; i < 10; i++) {
58+
await tick();
59+
}
60+
}
61+
5162
return this._isReferenceBeingHeld;
5263
}
5364

0 commit comments

Comments
 (0)