File tree Expand file tree Collapse file tree
Open diff view settings
Expand file tree Collapse file tree
Open diff view settings
Original file line number Diff line number Diff line change @@ -3612,6 +3612,7 @@ V8 options that are allowed are:
36123612* ` --expose-gc `
36133613* ` --interpreted-frames-native-stack `
36143614* ` --jitless `
3615+ * ` --max-heap-size `
36153616* ` --max-old-space-size `
36163617* ` --max-semi-space-size `
36173618* ` --perf-basic-prof-only-functions `
@@ -3968,6 +3969,12 @@ documented here:
39683969
39693970### ` --jitless `
39703971
3972+ ### ` --max-heap-size `
3973+
3974+ Specifies the maximum heap size (in megabytes) for the process.
3975+
3976+ This option is typically used to limit the amount of memory the process can use for its JavaScript heap.
3977+
39713978<!-- Anchor to make sure old links find a target -->
39723979
39733980<a id =" --max-old-space-sizesize-in-megabytes " ></a >
Original file line number Diff line number Diff line change @@ -1157,6 +1157,7 @@ PerIsolateOptionsParser::PerIsolateOptionsParser(
11571157 " help system profilers to translate JavaScript interpreted frames" ,
11581158 V8Option{},
11591159 kAllowedInEnvvar );
1160+ AddOption (" --max-heap-size" , " " , V8Option{}, kAllowedInEnvvar );
11601161 AddOption (" --max-old-space-size" , " " , V8Option{}, kAllowedInEnvvar );
11611162 AddOption (" --max-old-space-size-percentage" ,
11621163 " set V8's max old space size as a percentage of available memory "
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const assert = require ( 'assert' ) ;
4+ const { spawnSync } = require ( 'child_process' ) ;
5+ const path = require ( 'path' ) ;
6+ const fs = require ( 'fs' ) ;
7+ const tmpdir = require ( './tmpdir' ) ;
8+
9+ const testScript = `
10+ const v8 = require('v8');
11+ const stats = v8.getHeapStatistics();
12+ const maxHeapSizeMB = Math.round(stats.heap_size_limit / 1024 / 1024);
13+ console.log(maxHeapSizeMB);
14+ ` ;
15+
16+ tmpdir . refresh ( ) ;
17+ const scriptPath = path . join ( tmpdir . path , 'heap-limit-test.js' ) ;
18+ fs . writeFileSync ( scriptPath , testScript ) ;
19+
20+ const child = spawnSync (
21+ process . execPath ,
22+ [ scriptPath ] ,
23+ {
24+ encoding : 'utf8' ,
25+ env : {
26+ ...process . env ,
27+ NODE_OPTIONS : '--max-heap-size=750' ,
28+ } ,
29+ } ,
30+ ) ;
31+
32+ assert . strictEqual (
33+ child . status ,
34+ 0 ,
35+ [
36+ `Child process did not exit cleanly.` ,
37+ ` Exit code: ${ child . status } ` ,
38+ child . stderr ? ` Stderr: ${ child . stderr . toString ( ) } ` : '' ,
39+ child . stdout ? ` Stdout: ${ child . stdout . toString ( ) } ` : '' ,
40+ ] . filter ( Boolean ) . join ( '\n' ) ,
41+ ) ;
42+ const output = child . stdout . trim ( ) ;
43+ const heapLimit = Number ( output ) ;
44+
45+ assert . strictEqual (
46+ heapLimit ,
47+ 750 ,
48+ `max heap size is ${ heapLimit } MB, expected 750MB` ,
49+ ) ;
You can’t perform that action at this time.
0 commit comments