- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
JavaScript内存管理和闭包
王红元coderwhy
目录
1JavaScript内存管理
content
2垃圾回收机制算法
3闭包的概念理解
4闭包的形成过程
5闭包的内存泄漏
coderwhy认识内存管理
◼不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,不同的是某些编程语言需要我们自己手动的管理内存,
某些编程语言会可以自动帮助我们管理内存:
◼不管以什么样的方式来管理内存,内存的管理都会有如下的生命周期:
第一步:分配申请你需要的内存(申请);
第二步:使用分配的内存(存放一些东西,比如对象等);
第三步:不需要使用时,对其进行释放;
◼不同的编程语言对于第一步和第三步会有不同的实现:
手动管理内存:比如C、C++,包括早期的OC,都是需要手动来管理内存的申请和释放的(malloc和free函数);
自动管理内存:比如Java、JavaScript、Python、Swift、Dart等,它们有自动帮助我们管理内存;
◼对于开发者来说,JavaScript的内存管理是自动的、无形的。
我们创建的原始值、对象、函数……这一切都会占用内存;
但是我们并不需要手动来对它们进行管理,JavaScript引擎会帮助我们处理好它;
coderwhyJavaScript的内存管理
◼JavaScript会在定义数据时为我们分配内存。
◼但是内存分配方式是一样的吗?
JS对于原始数据类型内存的分配会在执行时,
直接在栈空间进行分配;
JS对于复杂数据类型内存的分配会在堆内存中
开辟一块空间,并且将这块空间的指针返回值
变量引用;
coderwhyJavaScript的垃圾回收
◼因为内存的大小是有限的,所以当内存不再需要的时候,我们需要对其进行释放,以便腾出更多的内存空间。
◼在手动管理内存的语言中,我们需要通过一些方式自己来释放不再需要的内存,比如free函数:
但是这种管理的方式其实非常的低效,影响我们编写逻辑的代码的效率;
并且这种方式对开发者的要求也很高,并且一不小心就会产生内存泄露;
◼所以大部分现代的编程语言都是有自己的垃圾回收机制:
垃圾回收的英文是GarbageCollection,简称GC;
对于那些不再使用的对象,我们都称之为是垃圾,它需要被回收,以释放更多的内存空间;
而我们的语言运行环境,比如Java的运行环境JVM,JavaScript的运行环境js引擎都会内存垃圾回收器;
垃圾回收器我们也会简称为GC,所以在很多地方你看到GC其实指的是垃圾回收器;
◼但是这里又出现了另外一个很关键的问题:GC怎么知道哪些对象是不再使用的呢?
这里就要用到GC的实现以及对应的算法;
coderwhy常见的GC算法–引用计数(Referencecounting)
◼引用计数:
当一个对象有一个引用指向它时,那么这个对象的引用就+1;
当一个对象的引用为0时,这个对象就可以被销毁掉;
◼这个算法有一个很大的弊端就是会产生循环引用;
coderwhy常见的GC算法–标记清除(mark-Sweep)
◼标记清除:
标记清除的核心思路是可达性(Reachability)
这个算法是设置一个根对象(rootobject),垃圾回收器会定期从这个根开始,找所有从根开始有引用到的对象,对于哪些
没有引用到的对象,就认为是不可用的对象;
这个算法可以很好的解决循环引用的问题;
coderwhy常见的GC算法–其他算法优化补充
◼JS引擎比较广泛的采用的就是可达性中的标记清除算法,当然
您可能关注的文档
- LoRa智慧停车系统开发.pptx
- LS_951Q尾气加氢催化剂在镇海炼化的工业应用.pdf
- DEFORM挤型工艺仿真及模具寿命分析技术.pdf
- DEFORM密封及紧固件制造、安装工艺仿真技术.pdf
- eclipse+weblogic使用手册说明.doc
- ERP应用与实践中的关键问题-现代物流与供应链管理.ppt
- EXCEL基本操作指南.docx
- FSAE赛车的悬架转向及制动系统设计.ppt
- HAZOPkit软件分析报告.pdf
- I.C.E.速冷袋创业商业计划书.ppt
- 2024-2025学年辽宁省锦州市渤海大学附属高级中心高一下学期期中考试历史试题.doc
- 2025届四川省凉山彝族自治州高三下学期第三次诊断性考试历史试题.doc
- 2025届北京市东城区高三下学期综合练习(二)历史试题.doc
- 2025届山西省太原市高三下学期5月模拟考试(三)历史试题.doc
- 2025至2030中国能源行业市场发展现状及前景趋势与行业项目调研及市场前景预测评估报告.docx
- 2025至2030中国药品行业发展分析及产业运行态势及投资规划深度研究报告.docx
- 2025至2030中国起停技术行业项目调研及市场前景预测评估报告.docx
- 2025至2030中国移民服务行业市场发展现状及前景趋势与行业项目调研及市场前景预测评估报告.docx
- 2025届山东省济南市高三上学期1月期末考试政治试卷(含答案).pdf
- 2025届江苏徐州高三下学期模拟预测物理试题(含答案).pdf
最近下载
- 2025车路云一体化系统建设与应用指南.docx VIP
- 手术标本的管理试题附有答案.docx VIP
- 内镜侧漏流程.pptx VIP
- 《中国高考报告(2024)》高考蓝皮书发行 .pdf VIP
- 《我的小手会穿衣》:课件展示.ppt VIP
- SAE-ARP4754A民用飞机和系统开发指南翻译稿.pdf
- 2024年九三学社社史知识竞赛题及答案(共70题).docx VIP
- 机械创新设计 课件 第7--9章 TRIZ理论与创新设计、 仿生原理与创新设计、 机械创新设计实例.pptx
- 2025年贵州省中考物理试卷真题(含答案解析).docx
- 2025年鄂尔多斯银行校园招聘笔试参考题库附答案解析.docx VIP
文档评论(0)