Files
bun.sh/test/cli/run/esm-bug-leak-fixture.mjs
Jarred Sumner b29d68bbaf Fix memory leak in require (#6790)
* Fix memory leak in require() and add test

* Mark fixtures as generated code

* Add optimization for large files

* Fix small memory leak

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-10-30 23:54:02 -07:00

30 lines
799 B
JavaScript
Generated

import { createRequire } from "node:module";
const require = createRequire(import.meta.url);
const dest = await import.meta.resolve("./esm-leak-fixture-large-ast.mjs");
if (typeof Bun !== "undefined") Bun.gc(true);
for (let i = 0; i < 5; i++) {
delete require.cache[dest];
await import(dest);
}
if (typeof Bun !== "undefined") Bun.gc(true);
const baseline = process.memoryUsage.rss();
for (let i = 0; i < 50; i++) {
delete require.cache[dest];
await import(dest);
}
if (typeof Bun !== "undefined") Bun.gc(true);
setTimeout(() => {
let diff = process.memoryUsage.rss() - baseline;
diff = (diff / 1024 / 1024) | 0;
console.log({ leaked: diff + " MB" });
if (diff > 120) {
console.log("\n--fail--\n");
process.exit(1);
} else {
console.log("\n--pass--\n");
}
}, 16);