网页页面忽然卡要死了,前面媛眼圈子出火了,因此程序员纷纷向前

lxf2023-12-14 06:30:02

网页页面忽然卡要死了,前面媛眼圈子出火了,因此程序员纷纷向前,冥思苦想,宏图霸业,可是,现象还是没处理,媛小姐姐的眼圈里已经储满了泪水,很快就要哭了出来来,这时候经过外卖大哥扫一眼:”this自变量所导致的。“随后,嗯,大家聊一聊核心技术的内存泄漏吧。

内存泄漏

大家都知道,电子计算机打开程序时,需要将程序流程有关代码,数据加载到运行内存中去计算,可是内存空间非常有限,添加一直使用,不增加内存,占内存愈来愈多,那样也会越来越卡,这样的情况下,占内存不释放出来,便是内存泄漏,自然假如能分配内存不够,也就会形成内存溢出,这类情况轻则卡屏,重则奔溃,因此还是需要注意的问题。

JS内存泄漏

js有着自己的垃圾回收机制,这一之前聊起,可是,假如开发者的程序编写方法不对得话,或是很容易造成内存泄漏的,下面我们来盘点一下JS比较常见的内存泄漏的主要原因。

1、局部变量

这是许多初学者程序员非常容易犯的错,在入门核心技术的情况下,对window目标并不是很了解,一定要注意,window对象的属性只会在关闭页面或是电脑浏览器的时候才能开启垃圾回收机制。

这一类型的申明非常少,但确实是看到过。

window.username = "laobian"

跟多的原因是因为因为对this自变量不太熟悉,忽视函数公式之中this偏向所导致的,便是开始妹纸犯的错。

<script>
  function example(){
    this.name = "laobian"
   }
  example() //因为全局性启用example,因此,example之中的this偏向是指window
</script>

自然解决方案很简单,启用进行,将自变量数值变为null

网页页面忽然卡要死了,前面媛眼圈子出火了,因此程序员纷纷向前

2、闭包

这在我们以前聊闭包时是聊起的,闭包就会形成局部的修饰符,在嵌套函数之中启用完的变量是不被垃圾分类回收的,因此需要手动式去删掉,闭包嵌套函数调用的自变量。

<script>
  function outer(){
    obj = {name: "laobian"};
    function inner(){
      obj.name = 1; //内部结构函数的调用造成our结束后,obj没有被释放出来
     };
    obj = null; //手动式删掉
   }
</script>

3、计时器

这一就看见就不少了,便是假如消毁一个dom原素,但这个dom原素在计时器之中是被启用,那样,依照垃圾回收机制,这一目标在计时器之中一直有引入,因此运行内存仍然不容易释放出来。

<script>
  var name = "laobian";
  consot timer = setInterval(function(){
    var obj = document.getElementById("obj_id");
    obj.innerHTML = name;
   })
</script>

这样的情况下,如果像删掉obj原素或是name目标得话,单一的消毁她两还远远不够,还要把记时器设为null,其实就是:

timer = null;

4、JS之中的DOM监视事情

这一也与第一点相近,也是因为全局性(window)监视事情所导致的,当然是必须人工的删掉。

<script>
  function clickFun(){
    console.log("do some things after click")
   }
  var obj = document.getElementById("obj_id");
  obj.addEventListener('click', clickFun) //这儿如果你想要删掉clickFun或是obj就必须要先清除这一监控
  //清除方式
  obj.removeEventListener('click', clickFun)
</script>

汇总

自然还有一些,例如vue之中的v-if嵌入原素所导致的内存溢出,等,总而言之,如果你越过程序编写的沙盒期,能够及时完成一个作用时,一定要注意每一个自变量,每一个元素申明周期时间,假如他永生不死,那你就要注意啦。到最后还是请各位大佬多多指点

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前面开发者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!