文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

web前端:js垃圾回收及内存泄漏

lzzyok小宝贝

lzzyok小宝贝

2024-04-23 22:47

关注

  Javascript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。

  js垃圾回收

  js能够自动回收申请却未使用的内存,由于每次清除需要的性能较大,不是时时在刷新,而是每隔一段时间才进行一次。

  回收的两种方式

  标记清除(常用)在内存中先标记变量,然后清除那些那些进入环境或者引用的变量的标记,当进入环境退出环境,将被重新标记并被清除,释放出内存。

  引用计数计算变量被引用的次数,引用次数为0将被清除释放内存。缺点:

  无法清除那些引用次数不为0,但又不需要的内存

  letarr=[1,2,3];

  console.log('ok');

  //数组[1,2,3]引用次数为1,但是又没用到就会一直占着内存

  //解决方式:arr.length=0

  无法解决循环引用的问题

  functionfn(){

  letobj1={};

  letobj2={};

  obj1.a=obj2;

  obj2.b=obj1;

  }

  //解决方法:手动释放obj1=nullobj2=null

  内存泄漏

  某些情况无法释放内存,变量一直处于环境中

  出现内存泄漏的一些情况

  最常见的就是闭包了

  闭包会创建一个不会被销毁的栈内存。

  不经意的全局变量

  functionfn(){

  obj={};//没用声明关键字,相当于创建了一个全局变量

  }

  计时器没有被清除

  setInterval()

  setTimeout()

  //解决方法

  清除对应定时器的id

  JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     442人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     206人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     169人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     248人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     77人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯