Any time when you have non-primitive type, it's going to be removed from memory anytime if it is no longer needed.
class Test {
constructor(name) {
this.name = name
}
}
const gloablTest = new Test("globalTest")
const globalString = "globalString"
{
const innerTest = new Test("innerTest")
const innerString = "innerString"
console.log(innerTest.name)
console.log(innerString)
}
After you do Heap snapshot, you will still see Test
, globalString
and innerString
due to Test
class has references and String
is primitive string, it's stay in memory.
When you do Heap snapshot
, you might see lots of objects in the result, some are from the javascript engine itself, if you only want to see the result which related to your code, you can do
1. Add debugger
on top of the file, then capture snapshot once
debugger;
class Test {
constructor(name) {
this.name = name
}
}
const gloablTest = new Test("globalTest")
const globalString = "globalString"
{
const innerTest = new Test("innerTest")
const innerString = "innerString"
console.log(innerTest.name)
console.log(innerString)
}
2. Resume the code on the debugger
point, and capture snapshot second times.
3. Then compare the the difference of two snapshot
video: https://www.youtube.com/watch?v=WqNqeMjd28I&list=WL&index=65&t=14s