does V8 uses stack and heap like the JVM? if so does it put primitives on the stack and objects on the heap?
null
, undefined
, true
and false
internally are heap allocated objects. If you are comming from Java you can say that true
and false
in V8 are more like Boolean.TRUE
and Boolean.FALSE
in Java.V8 has two compilers: non-optimizing (aka full) and optimizing one:
Speaking of JVM: it can perform so called stack allocation and allocate a non-escaping object on the stack instead of the heap. A more generic optimization (scalar replacement) can sometimes completely eliminate allocation of non-escaping object and explode it into separate fields.
Yes, V8 uses a heap similar to JVM and most other languages. This, however, means that local variables (as a general rule) are put on the stack and objects in the heap. This may for instance not hold if a function closes over these values. As in the JVM, primitives can only be stored on the stack if they are stored in a local variable.
As a user it is not something you would normally need to worry about.
In the most general terms, Yes V8 uses a heap and stack for functioning wherein general local variables are stored in the stack while the objects that need to be maintained are stored in the heap.