Comments (7)
To expand on what @tmikov commented.
With NCGen, Hermes reserves memories as 4MB segments. The expected outcome of this issue is not to break down the 4MB at commit time. In fact, I expect "commit" to still happen 4MB at a time. Instead, it is so that vm_unused
can have meaningful impact (to reduce RSS) on Windows.
from hermes.
As part of this task, once vm_unused is implemented, tests that exercised vm_unused can be re-enabled. However, those tests also exercises regionFootprint
, which is a test-only function that isn't implemented for Windows. regionFootprint
is certainly implementable on Windows.
- Microsoft Sysinternals provide a tool called VMMap, which provides the same kind of info that /proc/self/smaps provides. Screenshot here.
- An open source command line equivalent of VMMap can be found by following links in this stackoverflow question.
- Look for QueryWorkingSet in process_map.cpp in twpol/vmmap.
from hermes.
I think it is very important to note that Hermes is committing incrementally on Windows, only it is happening with a granularity of a single segment (4MB).
from hermes.
Thanks for the clarification. I haven't tested with NCGen yet.
vm_unused implementation would help for long running apps.
from hermes.
@mganandraj After a full GC we release unused 4MB segments to the OS, so you will get that behavior already, with 4 MB granularity.
from hermes.
I think this will actually be more relevant if PreAllocatedStorageProvider
is used instead of VMAllocateStorageProvider
.
PreAllocatedStorageProvider
right now (on Windows) will reserve and commit the whole 500 MB range; however, it could be changed to only reserve the 500 MB range, and commit upon each call to newStorage
.
PreAllocatedStorageProvider
isn't the default yet for NCGen, but providing some experiments I'm working on go well, we might transition to using that on some platforms.
from hermes.
Implemented in 043f073
from hermes.
Related Issues (20)
- libc.so (SIGABRT, SIGSEGV) HOT 4
- Performance regression traversing large arrays compared to other engines HOT 4
- Hermes 0.7.2 : Max heap size was exceeded HOT 4
- hermes eslint: No sourceCode in context HOT 6
- Bug: recursion: "Maximum call stack size exceeded" HOT 2
- Wrong `DCMAKE_TOOLCHAIN_FILE` in docs HOT 3
- Intl.NumberFormat can't always display the number's sign HOT 1
- Intl.NumberFormat with compact notation doesn't display formatting HOT 1
- Examples how to use the experimental C ABI? HOT 3
- babel-plugin-syntax-hermes-parser drops chunk names HOT 1
- static_h: Assertion `Val && "isa<> used on a null pointer"' failed with -typed on tsc.js HOT 2
- fatal: unable to access 'http://github.com/facebook/hermes.git/' HOT 2
- I hope Static Hermes supported Windows, Linux, and MacOS. HOT 2
- Local debug and release build throws a type error HOT 3
- I hope it was possible for Static Hermes to native AOT compile all the existing NPM modules. HOT 1
- Intl.DateTimeFormat does not support 'Europe/Kyiv' timezone HOT 2
- It would be good for Static Hermes if it could use pure JavaScript code(that has no type annotations) with automatic type guessing like "var" code in Dart, or ":=" in Go. HOT 7
- Using Intl with standalone Hermes app HOT 2
- Support for top level await HOT 1
- iphoneos framework very large size issue (build-apple-framework.sh) HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hermes.