Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix memory leak in require.cache #24282

Merged
merged 4 commits into from
May 5, 2021
Merged

fix memory leak in require.cache #24282

merged 4 commits into from
May 5, 2021

Conversation

sokra
Copy link
Member

@sokra sokra commented Apr 20, 2021

Previously only the top-level page would be cleared from the require cache, with this change it also clears module.parent and modules.children.

@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@sokra sokra force-pushed the memory/leak-require-cache branch from 9caf903 to 388f1c8 Compare April 28, 2021 19:32
@ijjk

This comment has been minimized.

@ijjk

This comment has been minimized.

@sokra sokra force-pushed the memory/leak-require-cache branch from 388f1c8 to f386aae Compare April 28, 2021 20:17
@sokra sokra marked this pull request as ready for review April 28, 2021 20:20
@ijjk

This comment has been minimized.

@ijjk
Copy link
Member

ijjk commented May 5, 2021

Stats from current PR

Default Server Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
buildDuration 13.5s 13.5s ⚠️ +87ms
buildDurationCached 4.5s 4.3s -224ms
nodeModulesSize 46.6 MB 46.6 MB ⚠️ +1.81 kB
Page Load Tests Overall increase ✓
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
/ failed reqs 0 0
/ total time (seconds) 2.277 2.285 ⚠️ +0.01
/ avg req/sec 1097.77 1094.2 ⚠️ -3.57
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.188 1.173 -0.01
/error-in-render avg req/sec 2104.18 2130.64 +26.46
Client Bundles (main, webpack, commons)
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
framework-HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 19.3 kB 19.3 kB
webpack-HASH.js gzip 996 B 996 B
Overall change 59.6 kB 59.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_app-HASH.js gzip 1.02 kB 1.02 kB
_error-HASH.js gzip 3.04 kB 3.04 kB
amp-HASH.js gzip 526 B 526 B
css-HASH.js gzip 334 B 334 B
hooks-HASH.js gzip 890 B 890 B
index-HASH.js gzip 262 B 262 B
link-HASH.js gzip 1.65 kB 1.65 kB
routerDirect..HASH.js gzip 331 B 331 B
withRouter-HASH.js gzip 329 B 329 B
99a142a5cfae..804.css gzip 125 B 125 B
Overall change 8.51 kB 8.51 kB
Client Build Manifests
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_buildManifest.js gzip 393 B 393 B
Overall change 393 B 393 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
index.html gzip 561 B 561 B
link.html gzip 570 B 570 B
withRouter.html gzip 557 B 557 B
Overall change 1.69 kB 1.69 kB

Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
buildDuration 16.9s 16.8s -77ms
buildDurationCached 6.3s 6.3s ⚠️ +12ms
nodeModulesSize 46.6 MB 46.6 MB ⚠️ +1.81 kB
Client Bundles (main, webpack, commons)
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
framework-HASH.js gzip 39.3 kB 39.3 kB
main-HASH.js gzip 19.3 kB 19.3 kB
webpack-HASH.js gzip 996 B 996 B
Overall change 59.6 kB 59.6 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
polyfills-HASH.js gzip 31.1 kB 31.1 kB
Overall change 31.1 kB 31.1 kB
Client Pages
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_app-HASH.js gzip 1.02 kB 1.02 kB
_error-HASH.js gzip 3.04 kB 3.04 kB
amp-HASH.js gzip 526 B 526 B
css-HASH.js gzip 334 B 334 B
hooks-HASH.js gzip 890 B 890 B
index-HASH.js gzip 262 B 262 B
link-HASH.js gzip 1.65 kB 1.65 kB
routerDirect..HASH.js gzip 331 B 331 B
withRouter-HASH.js gzip 329 B 329 B
99a142a5cfae..804.css gzip 125 B 125 B
Overall change 8.51 kB 8.51 kB
Client Build Manifests
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_buildManifest.js gzip 393 B 393 B
Overall change 393 B 393 B
Serverless bundles Overall decrease ✓
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_error.js 1.34 MB 1.34 MB
404.html 2.42 kB 2.42 kB
500.html 2.41 kB 2.41 kB
amp.amp.html 10.8 kB 10.8 kB
amp.html 1.61 kB 1.61 kB
css.html 1.79 kB 1.79 kB
hooks.html 1.67 kB 1.67 kB
index.js 1.34 MB 1.34 MB -2 B
link.js 1.4 MB 1.4 MB ⚠️ +2 B
routerDirect.js 1.39 MB 1.39 MB -2 B
withRouter.js 1.39 MB 1.39 MB -2 B
Overall change 6.9 MB 6.9 MB -4 B

Webpack 4 Mode (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
buildDuration 11.6s 11.8s ⚠️ +237ms
buildDurationCached 4.9s 4.7s -198ms
nodeModulesSize 46.6 MB 46.6 MB ⚠️ +1.81 kB
Page Load Tests Overall increase ✓
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
/ failed reqs 0 0
/ total time (seconds) 2.323 2.308 -0.02
/ avg req/sec 1076.05 1083.36 +7.31
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.226 1.224 0
/error-in-render avg req/sec 2039.41 2043.24 +3.83
Client Bundles (main, webpack, commons)
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
677f882d2ed8..HASH.js gzip 13.3 kB 13.3 kB
framework.HASH.js gzip 39 kB 39 kB
main-HASH.js gzip 7.19 kB 7.19 kB
webpack-HASH.js gzip 751 B 751 B
Overall change 60.2 kB 60.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
polyfills-HASH.js gzip 31.3 kB 31.3 kB
Overall change 31.3 kB 31.3 kB
Client Pages
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_app-HASH.js gzip 1.28 kB 1.28 kB
_error-HASH.js gzip 3.71 kB 3.71 kB
amp-HASH.js gzip 536 B 536 B
css-HASH.js gzip 339 B 339 B
hooks-HASH.js gzip 887 B 887 B
index-HASH.js gzip 227 B 227 B
link-HASH.js gzip 1.64 kB 1.64 kB
routerDirect..HASH.js gzip 303 B 303 B
withRouter-HASH.js gzip 302 B 302 B
21c68fa65a48..217.css gzip 125 B 125 B
Overall change 9.36 kB 9.36 kB
Client Build Manifests
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
_buildManifest.js gzip 420 B 420 B
Overall change 420 B 420 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js memory/leak-require-cache Change
index.html gzip 613 B 613 B
link.html gzip 620 B 620 B
withRouter.html gzip 606 B 606 B
Overall change 1.84 kB 1.84 kB
Commit: 4dec3dd

@kodiakhq kodiakhq bot merged commit 83395c9 into canary May 5, 2021
@kodiakhq kodiakhq bot deleted the memory/leak-require-cache branch May 5, 2021 09:26
flybayer pushed a commit to blitz-js/next.js that referenced this pull request Jun 1, 2021
Previously only the top-level page would be cleared from the require cache, with this change it also clears `module.parent` and `modules.children`.
@vercel vercel locked as resolved and limited conversation to collaborators Jan 28, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants