Memory leak in JavaScript (Chrome)

前端 未结 2 1517
情话喂你
情话喂你 2021-02-03 12:34

I\'m calling a function 50 times a second, which does some expensive things as it is painting alot on a element.

It works great, no problems

相关标签:
2条回答
  • 2021-02-03 13:33

    I'm just going to pull this quote directly, linked from the article;

    Speaking of memory leaks, breaking circular references — the cause of the leaks — is usually done with simple null assignment. There’s usually no need to use delete. Moreover, null‘ing allows to “dereference” variables — what delete would normally not be able to do.

    var el = document.getElementById('foo');
    // circular reference is formed
    el.onclick = function() { /* ... */ };
    // circular reference is broken
    el = null;
    // can't `delete el` in this case, as `el` has DontDelete
    

    For these reasons, it’s best to stick with null‘ing when breaking circular references.

    delete Explained

    0 讨论(0)
  • 2021-02-03 13:36

    Look at heap profile under the Profiles tab in Chrome's developer tools for information about memory usage.

    You can do the following to prevent memory leaks:

    • Test your code with JSLint, to see if that will give you some pointers.
    • Use the var keyword to give your variables function scope, so they can be garbage collected when they go out of scope. Without the var keyword variables have global scope.
    • Use delete variable; statements to remove the object as well as the reference from memory. Setting the variable to null will only remove the object from memory, but not its reference.
    0 讨论(0)
提交回复
热议问题