[Javascript] garbage collection

Zhentiw發表於2024-07-01

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 Testclass has references and Stringis 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 debuggeron 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 debuggerpoint, 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

相關文章