当前位置:网站首页>js garbage collection mechanism
js garbage collection mechanism
2022-08-03 04:32:00 【weixin_46051260】
The garbage collection mechanism is called Garbage Collection for short GC.The garbage collection mechanism of js is a mechanism to periodically recycle idle resources. Every once in a while, the execution environment will clean up some useless variables in the memory to release the memory occupied by him.
Core idea: find useless variables and free their memory
1) Tag Clear
Tag removal is the most commonly used garbage collection strategy. Browsers that use tag removal as a garbage collection mechanism will perform the following steps during the garbage collection process:
- All variables in the standard memory
- Remove the variables declared in the context (global scope, script scope) and the tags of the variables that are referenced in the global, and all the remaining marked variables are regarded as variables to be deleted, garbageFree the memory they occupy when reclaiming executes
- Clean up memory, remove junk
// The variables color and dog are declared in the global environment and will not be clearedconst color = 'red';var dog = 'Golden Retriever';{let cat = 'kitty'; // The variable cat is declared in block scope and is not globally referenced, so its memory will be released when the next garbage collection is performedspan>}
2) Reference counting
Reference counting is an uncommon garbage collection strategy. The main core idea is to record the number of times a value is referenced. A value is assigned to a variable, the number of references +1, and this variable is reassigned a new value at a certain time., the reference count of the old value -1 becomes 0, and its memory will be released the next time the garbage collection process is performed.
The problem with citation technology: circular references
function fn() {const obj1 = new Object()// new Object creates an object 1 in heap memory {} this value is assigned to obj1 so the number of references + 1const obj2 = new Object()// new Object creates an object 2 in heap memory {} this value is assigned to obj2 so the number of references + 1obj1.a = obj2; // obj2 is assigned to the a property of obj1, so the number of references to object 1 is 1+1 = 2obj2.a = obj1; // obj1 is assigned to the a property of obj2, so the number of references to object 2 is 1+1 = 2}// At this time, the two objects refer to each other. If the function is called multiple times, the function body will be re-executed multiple times, and there will be n more objects that refer to each other occupying memoryspan>
obj1.a = null;obj2.a = null;// By setting it to null, the reference between the two can be cut off, and it will be cleaned up and released in the next recycling
边栏推荐
- 接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock
- DDL操作数据库、表、列
- mysql bool blind
- 【Harmony OS】【FAQ】鸿蒙问题合集1
- 【翻译】开发与生产中的Kubernetes修复成本对比
- 探索性测试的概念及方法
- 9.新闻分类:多分类问题
- The flink sql task is changed, and after adding several fields to the sql, an error occurs when restoring from the previously saved savepoint.
- rosbag工具plotjuggler无法打开rosbag的问题
- 计网试卷概念
猜你喜欢
随机推荐
种草一个让程序员男友编程时,记住一辈子的 IDEA 神仙插件!
DC-5靶场下载及渗透实战详细过程(DC靶场系列)
私域流量引流方法?分享购火爆的商业模式,你值得拥有
MySql 创建索引
【精讲】利用原生js实现todolist
2022 the first of the new league henan (4) : zhengzhou university of light industry G - maze
ORACLE中文乱码
接口测试框架实战(二)| 接口请求断言
工程制图点的投影练习
【uni-APP搭建项目】
【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示
【Harmony OS】【ArkUI】ets开发 基础页面布局与数据连接
Redis缓存雪崩、缓存穿透、缓存击穿
在线密码生成工具推荐
WinForm的控件二次开发
肖sir__简历
10.预测房价:回归问题
EssilorLuxottica借助Boomi的智能集成平台实现订单处理的现代化
leetcode刷题学习之路
SeleniumWebDriver扩展插件开发