diff options
author | Ali Ijaz Sheikh <ofrobots@google.com> | 2019-02-01 11:38:52 -0800 |
---|---|---|
committer | Ali Ijaz Sheikh <ofrobots@google.com> | 2019-02-01 13:18:13 -0800 |
commit | 1d996f58af3067617a67c0af8f86f014ed4d139c (patch) | |
tree | 9532cbc371a3612ad35f643c01ea332b333ce1ff /src/api/environment.cc | |
parent | d0d84b009ce4f2fe274568ed39754c02167e27d3 (diff) | |
download | android-node-v8-1d996f58af3067617a67c0af8f86f014ed4d139c.tar.gz android-node-v8-1d996f58af3067617a67c0af8f86f014ed4d139c.tar.bz2 android-node-v8-1d996f58af3067617a67c0af8f86f014ed4d139c.zip |
src: properly configure default heap limits
Unless configured, V8 defaults to limiting the max heaps size to 700 MB
or 1400MB on 32 and 64-bit platforms respectively. This default is
based on the browser use-cases and doesn't make a lot of sense
generally. This change properly configures the heap size based on
actual available memory.
PR-URL: https://github.com/nodejs/node/pull/25576
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Yang Guo <yangguo@chromium.org>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'src/api/environment.cc')
-rw-r--r-- | src/api/environment.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/api/environment.cc b/src/api/environment.cc index 22938df37c..e54252824b 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -80,6 +80,15 @@ void FreeArrayBufferAllocator(ArrayBufferAllocator* allocator) { Isolate* NewIsolate(ArrayBufferAllocator* allocator, uv_loop_t* event_loop) { Isolate::CreateParams params; params.array_buffer_allocator = allocator; + + double total_memory = uv_get_total_memory(); + if (total_memory > 0) { + // V8 defaults to 700MB or 1.4GB on 32 and 64 bit platforms respectively. + // This default is based on browser use-cases. Tell V8 to configure the + // heap based on the actual physical memory. + params.constraints.ConfigureDefaults(total_memory, 0); + } + #ifdef NODE_ENABLE_VTUNE_PROFILING params.code_event_handler = vTune::GetVtuneCodeEventHandler(); #endif |