垃圾回收机制
变量的生命周期:
js中有两种变量,全局变量和局部变量,局部变量在函数运行完自动删除,而全局变量在浏览器关闭时删除。
什么是垃圾?
没有被引用的对象。
什么叫内存泄漏?
当一块内存已经不需要了,但是它还存在,这种东西多了就会造成内存泄漏。
什么情况会引起内存泄漏?
1、全局变量
解释:局部变量在函数使用完会自动被清理,但是全局变量不会被回收,因为不知道这个全局变量你还会不会使用啊。
解决:使用ES6的严格模式会帮我避免这个问题,还有不再使用的变量我们可以手动将它设置为null。多用局部变量,少用全局变量。
2、闭包引起的内存泄漏
解释:闭包的一个优点就是将函数内的私有变量保存为全局变量,并且不会被销毁。
解决:我们要将事件处理函数放到外部定义,平时写代码注意保持良好的习惯,尽量不要函数套函数。
3、没有清理的DOM元素引用
解释:虽然别的地方删除了,但是对象还存在DOM的引用中。
解决:手动删除。
4、别遗忘的定时器或者回调
解释:使用的定时器如果没有清除,那这个定时器就一直存在,所以在写代码的时候,要注意到清除定时器。
什么叫垃圾回收机制?
每隔一段时间,去内存中找到那些不再使用的值,然后给它释放掉,一次来缓解内存的压力。
JavaScript的垃圾回收方式:
1、标记清除,就是将不用的变量设置为null,这样在下一次垃圾回收器运行的时候,会带走这些被标记的变量,释放他们所占用的内存。
2、引用计数,这个是低版本的IE使用的计数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结