Memory size of Javascript Boolean
Nik Shevchenko
Posted on February 20, 2020
Introduction
Javascript in the browser works a level above Javascript Engine (V8, Rhino, JavaScriptCore, SpiderMonkey). These engines follow the ECMAScript Standards. ECMAScript defines the standard for the scripting language. [1]
In this post, we will use V8 Engine by Google. The V8 Engine:
- The V8 Engine is written in C++ and used in Chrome & in Node.js, among others.
- It implements the ECMAScript Standard as specified in ECMA-262. [1]
More specific documentation of the V8 Engine is available at docs.
The main scheme of compilation JavaScript code to Machine Code:
Each object takes a specific size in memory and C++ or ECMAScript specify on this size.
Boolean
Size: 4 bytes or 1 byte
A boolean
is actually 1 byte
. But alignment may cause 4 bytes to be used on a 32-bit platform or 8 bytes on a 64-bit platform. This old trick comes from the observation that allocated memory takes up at least 4 or 8 bytes, and are aligned in the way that the least significant bit or three will be zero.
In C++, the size of the type boolean
is implementation-defined (expr.sizeof[p1]) and is usually equal to 1 (the size of the type char, and the smallest size a type can have), but is not required to be (expr.sizeof[fn77]): in particular, in Visual Studio up to version 4.2, it was 4. More information about C++ boolean values is available at docs[expr.sizeof(7.6.2.4)].
Resources
[1] –– https://www.ecma-international.org/publications/standards/Ecma-262.htm
Posted on February 20, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.