Search code examples
javascriptgarbage-collection

Does referencing a child object prevent the parent object from being garbage collected in javascript


Say I have an object

let a = {
  b: {
    name: "Sugarcane"
  }
}

and I do

let c = a.b

and I later nullify the a object like so:

a = null

does the reference to b object by c prevent the previous object stored in a from being garbage collected in Javascript?


Solution

  • Actually no, as long as there is a reference to the object stored in memory, the GC will not be able to free this object from memory.

    When you nullify object A it is removed from memory, but this does not affect its properties if they are objects and are stored in another variable.

    You are just changing the reference from A to NULL, but B will continue to exist in memory as long as C continues to have its reference stored.

    B will only be removed from memory when C is nullified.

    let a = {
        b: {
            name: "Sugarcane"
        }
    };
    
    let c = a.b;
    
    a = null;
    
    console.log(
        "A value: ", a,
        "\nC value:", c,
        "\nC.name value:", c.name
    );