0% found this document useful (0 votes)
16 views4 pages

05 Stack Heap

The document explains the differences between stack and heap memory allocation in JavaScript, emphasizing how primitive values are stored on the stack while reference types are stored in the heap. It discusses garbage collection, which automates memory management in modern languages like JavaScript, making it easier for developers. The document also illustrates how variable assignment works for both primitive and reference types, highlighting the concepts of passing by value and passing by reference.

Uploaded by

Swarup Routray
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views4 pages

05 Stack Heap

The document explains the differences between stack and heap memory allocation in JavaScript, emphasizing how primitive values are stored on the stack while reference types are stored in the heap. It discusses garbage collection, which automates memory management in modern languages like JavaScript, making it easier for developers. The document also illustrates how variable assignment works for both primitive and reference types, highlighting the concepts of passing by value and passing by reference.

Uploaded by

Swarup Routray
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

05-stack_heap.

md 3/19/2023

Stack vs Heap Memory Allocation


Now we're going to look at how primitive and reference type data is stored in memory. One thing I really
want to mention is that if you're a beginner or even intermediate, this may seem a little confusing but that's
absolutely fine. In all honestly, I have met senior developers that don't know some of this stuff, so don't let
this overwhelm you.

What's really important right now is that you just know the types and know how to create variables. I was iffy
on even talking about some of this stuff at this point, but I want to this to be a very thorough course. You can
always just take in the basics and come back to these videos later. And I'll do my best to let you know what is
really important for the day to day and what is more behind the scenes knowledge.

Garbage Collection
Before we look at how data is stored in memory, I just want to mention that JavaScript uses something called
garbage collection. With some low-level languages such as C and C++, you actually have to manage your
own memory. When you create variables, you have to allocate the memory yourself and when you are done,
you need to free up that space. It makes programming much more difficult. More modern interpreted
languages like JavaScript and Python, do not have you do this. It is automated with something called
garbage collection. That's why you don't technically need to know how this stuff works to start writing
JavaScript.

Memory Allocation
When we create a variable, the JavaScript engine allocates them into two different locations called the stack
and the heap.

Primitive values like strings, numbers, etc are static and immutable data that are fixed. Because of this, the size
of the data doesn't change at all, so the space is allocated as a fixed amount and is stored on the stack.

So let's take the following example

const name = 'John';


const age = 30;

To help visualize this, I created a simple image of what the memory stack would look like

1/4
05-stack_heap.md 3/19/2023

Notice that the memory was allocated on the stack for the variable and the value for name and age. This is
because they are static primitive values.

Now let's create a person object

const person = {
name: 'Brad',
age: 40
}

Since this is a reference type that is not static and we can add and remove values from it, the object gets
stored in the heap

Lets set a new variable called newName to reference the primitive name variable

const newName = name;

2/4
05-stack_heap.md 3/19/2023

Under the hood, JavaScript copies the primitive value of 'John' and assigns it to newName

Now, let's change the value of the newName to Jonathan

newName = 'Jonathan'

The name value stays the same and only the newName is changed. That's because it was passed by the value.

Now lets create a new variable called newPerson and set it to person

const newPerson = person;

Now the newPerson variable references the same value on the heap.

3/4
05-stack_heap.md 3/19/2023

If I were to update newPerson object's name value

newPerson.name = 'Bradley'

It would change the reference in the heap as well and now both person and newPerson will have the name
Bradley. This is because it is passed by reference.

So at some point, this knowledge will come in handy when you get into more advanced programming. It's not
really beginner stuff, but I do think learning it now gives you a leg up.

4/4

You might also like