当前位置: 首页 > news >正文

js垃圾回收机制

内存的生命周期

]S环境中分配的内存,一般有如下生命周期
1.内存分配:当我们声明变量、函数、对象的时候,系统会自动为他们分配内存
2.内存使用:即读写内存,也就是使用变量、函数等
3.内存回收: 使用完毕,由垃圾回收器自动回收不再使用的内存

说明:
全局变量一般不会回收(关闭页面回收)
一般情况下局部变量的值,不用了,会被自动回收掉

内存泄漏:程序中分配的内存由于某种原因程序未释放或无法释放叫做内存泄漏
在这里插入图片描述
堆栈空间分配区别:
1.栈(操作系统):由操作系统自动分配释放函数的参数值、局部变量等,基本数据类型放到栈里面
2.堆(操作系统):一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。复杂数据类型放到堆里面

垃圾回收算法: 引用计数法 和 标记清除法

引用计数
IE采用的引用计数算法,定义“内存不再使用’就是看一个对象是否有指向它的引用,没有引用了就回收对象

算法:
1.跟踪记录被引用的次数
2.如果被引用了一次,那么就记录次数1,多次引用会累加 ++
3.如果减少一个引用就减1 -
4.如果引用次数是0,则释放内存

现代浏览器通用的大多是基于标记清除算法的某些改进算法,总体思想都是一致的。核心:
1.标记清除算法将“不再使用的对象”定义为“无法达到的对象”
2.就是从根部(在]S中就是全局对象)出发定时扫描内存中的对象。凡是能从根部到达的对象,都是还需要使用的.
3.那些无法由根部出发触及到的对象被标记为不再使用,稍后进行回收

http://www.lryc.cn/news/30446.html

相关文章:

  • YApi分析从NoSQL注入到RCE远程命令执行.md
  • 【C++】stl_list介绍和实现,list和vector区别,list vector string 迭代器失效
  • linux-kernel-ecmp-ipv4
  • 蒙特卡洛树搜索(MTCS)
  • 【Verilog】——Verilog简介
  • 【Python从入门到进阶】10、流程控制语句-循环语句(for-while)
  • 超全的命令(代码)执行漏洞无回显的姿势总结(附带详细代码和测试分析过程)
  • STM32MP157-Linux音频应用编程-简易语音助手
  • Python-OpenCV图像处理:学习图像算术运算,如加减法、图像混合、按位运算,以及如何实现它们
  • 并发编程——ReentrantLock
  • English Learning - L2 第 3 次小组纠音 [ʌ] [ɒ] [ʊ] [ɪ] [ə] [e] 2023.3.4 周六
  • STM32之关门狗
  • Apollo控制部分1-- ControlComponent组件介绍
  • 0626-0631韩顺平Java Buffered字节处理流 学习笔记
  • 【网络】序列化和反序列化
  • 【代码随想录训练营】【Day32】第八章|贪心算法|122.买卖股票的最佳时机II |55. 跳跃游戏|45.跳跃游戏II
  • constexpr 和 常量表达式
  • Vue响应式原理————Object.defineProperty()和proxy的用法分享
  • CSDN 编程竞赛三十四期题解
  • C#教程06 运算符
  • 软测入门(六)pytest单元测试
  • 经典分类模型回顾5—DenseNet实现图像分类(matlab)
  • 基于flask+bootstrap+echarts+mysql的鱼村小馆订餐后台管理系统
  • Spark使用Log4j将日志发送到Kafka
  • c++类与对象整理(上)
  • Docker学习(十九)什么是镜像的元数据?
  • Python如何获取弹幕?给你介绍两种方式
  • JAVA- AOP 面向切面编程 Aspect切面工具类 记录特定方法执行时的入参、执行时间、返参等内容
  • 「史上最全的 TCG 规范解读」TCG 规范架构概述(下)
  • GDScript 导出变量 (4.0)