Home > Web Front-end > JS Tutorial > Quickly understand JavaScript garbage collection

Quickly understand JavaScript garbage collection

Guanhui
Release: 2020-05-25 09:38:00
forward
2171 people have browsed it

Quickly understand JavaScript garbage collection

Preface

JS has an automatic garbage collection mechanism. In other words, the execution environment manages the memory used during code execution.

The principle of JS garbage collection

The execution environment will find those variables that are no longer used, and then release the memory they occupy.

JS garbage collection strategy

Mark clearing

When a variable enters the environment, it Mark this variable as "entering the environment" and when the variable leaves the environment, mark it as "leaving the environment".

The way to mark variables depends on the specific implementation. For example, you can use a "entering the environment" variable list and a "leaving the environment" variable list to track which variables have changed.

Browsers that have used tag removal include IE, Firefox, and chrome.

Reference counting

This is a less common garbage collection strategy, which tracks the number of times each value is referenced.

When a variable a is declared and a reference type value ({name:'cc'}) is assigned to the variable, the number of references to this value is 1. If a ({name:'cc '}) is assigned to another variable b, then the number of references to this value is increased by 1. On the contrary, if a is assigned the value {name:'xx'}, the number of references to the value {name:'cc'} is reduced by 1. When the number of references to the value {name:'cc'} becomes 0, it means that there is no way to access the value {name:'cc'} anymore, so the memory space occupied by it can be recycled. In this way, when the garbage collector works, the memory space occupied by the value {name:'cc'} will be recycled.

This method has been used by Netscape Navigator 3.0, but there is a serious problem: circular reference.

function circleReferenceProbem(){
  let objectA = new Object()
  let objectB = new Object()
  objectA.someOtherObject = objectB
  objectB.anotherObject = objectA
}
Copy after login

After executing this function, because the number of references of these two reference values ​​​​will never be 0, the garbage collector will never reclaim the memory space they occupy.

Performance of JS garbage collector

Because the JS garbage collector performs garbage collection every other cycle.

If the amount of memory allocated for the variable is not large, then the garbage collector's recycling workload will not be large. However, when the workload of the garbage collector is too large, lags are likely to occur.

Suggestions for managing memory in JS

1. Use global variables as little as possible

2. Clear variables manually as much as possible Reference

Recommended tutorial: "JS Tutorial"

The above is the detailed content of Quickly understand JavaScript garbage collection. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
gc js
source:juejin.im
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
Where is js written?
From 1970-01-01 08:00:00
0
0
0
js addClass not working
From 1970-01-01 08:00:00
0
0
0
js file code not found
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template