summaryrefslogtreecommitdiff
path: root/src/api/environment.cc
diff options
context:
space:
mode:
authorAli Ijaz Sheikh <ofrobots@google.com>2019-02-01 11:38:52 -0800
committerAli Ijaz Sheikh <ofrobots@google.com>2019-02-01 13:18:13 -0800
commit1d996f58af3067617a67c0af8f86f014ed4d139c (patch)
tree9532cbc371a3612ad35f643c01ea332b333ce1ff /src/api/environment.cc
parentd0d84b009ce4f2fe274568ed39754c02167e27d3 (diff)
downloadandroid-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.cc9
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