From bf37efee90b570e78926f5d2df8d7ce0d066d52f Mon Sep 17 00:00:00 2001 From: Keyhan Vakil Date: Sun, 28 Aug 2022 21:56:54 -0700 Subject: [PATCH] doc,worker: document resourceLimits overrides If `--max-old-space-size` is passed on the command line, it takes precedence over `resourceLimits.maxOldSpaceSizeMb` passed to the worker thread. IMO this is a bug, but seems unlikely to change(?), so let's start by documenting it. See the attached issue for more details. Refs: https://github.com/nodejs/node/issues/43991 PR-URL: https://github.com/nodejs/node/pull/43992 Reviewed-By: James M Snell --- doc/api/worker_threads.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/api/worker_threads.md b/doc/api/worker_threads.md index 58a4dade197fd6..223bf1dbf4bacf 100644 --- a/doc/api/worker_threads.md +++ b/doc/api/worker_threads.md @@ -977,14 +977,17 @@ changes: are passed in `workerData`, a `transferList` is required for those items or [`ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST`][] is thrown. See [`port.postMessage()`][] for more information. - * `resourceLimits` {Object} An optional set of resource limits for the new - JS engine instance. Reaching these limits leads to termination of the - `Worker` instance. These limits only affect the JS engine, and no external - data, including no `ArrayBuffer`s. Even if these limits are set, the process - may still abort if it encounters a global out-of-memory situation. - * `maxOldGenerationSizeMb` {number} The maximum size of the main heap in MB. + * `resourceLimits` {Object} An optional set of resource limits for the new JS + engine instance. Reaching these limits leads to termination of the `Worker` + instance. These limits only affect the JS engine, and no external data, + including no `ArrayBuffer`s. Even if these limits are set, the process may + still abort if it encounters a global out-of-memory situation. + * `maxOldGenerationSizeMb` {number} The maximum size of the main heap in + MB. If the command-line argument [`--max-old-space-size`][] is set, it + overrides this setting. * `maxYoungGenerationSizeMb` {number} The maximum size of a heap space for - recently created objects. + recently created objects. If the command-line argument + [`--max-semi-space-size`][] is set, it overrides this setting. * `codeRangeSizeMb` {number} The size of a pre-allocated memory range used for generated code. * `stackSizeMb` {number} The default maximum stack size for the thread. @@ -1320,6 +1323,8 @@ thread spawned will spawn another until the application crashes. [`'close'` event]: #event-close [`'exit'` event]: #event-exit [`'online'` event]: #event-online +[`--max-old-space-size`]: cli.md#--max-old-space-sizesize-in-megabytes +[`--max-semi-space-size`]: cli.md#--max-semi-space-sizesize-in-megabytes [`ArrayBuffer`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer [`AsyncResource`]: async_hooks.md#class-asyncresource [`Buffer.allocUnsafe()`]: buffer.md#static-method-bufferallocunsafesize