您当前的位置:网站首页>JS>快速理解 JavaScript 的垃圾回收 找JS教程就上ki4.cc (>^ω^<),js,gc

快速理解 JavaScript 的垃圾回收 找JS教程就上ki4.cc (>^ω^<),js,gc

2020年05月26日 投稿作者: 围观人数:44

详解DOM元素和事件 找JS教程就上ki4.cc (>^ω^<)

事件是指用户的行为或元素的状态。由指定元素监听相关的事件,并且绑定事件处理函数。元素监听事件,并在事件发生时自动执行的操作就是时间处理函数。

前言

JS具有自动垃圾回收机制,换句话说,执行环境会管理代码执行过程中使用的内存。

JS垃圾回收的原理

执行环境会找出那些不再继续使用的变量,然后释放其占用的内存。

JS垃圾回收的策略

标记清除

当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,则将其标记为“离开环境”。

标记变量方式看具体的实现,比如可以使用一个“进入环境”的变量列表和一个“离开环境”的变量列表来跟踪哪个变量发生了变化。

使用过标记清除的浏览器有IE,Firefox,chrome。

引用计数

js如何实现函数防抖与节流 找JS教程就上ki4.cc (>^ω^<)

防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。节流:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。

这是一种不太常见的垃圾回收的策略,它就是跟踪每一个值被引用的次数。

当声明了一个变量a并将一个引用类型值({name:'cc'})赋给该变量时,则这个值的引用次数就是1,如果a({name:'cc'})又赋给另一个变量b,则该值的引用次数加1。反之,如果a赋值{name:'xx'},则{name:'cc'}这个值的引用次数减1。当{name:'cc'}这个值的引用的次数变为0时,则说明没有办法再访问{name:'cc'}这个值了,因而可以将其占用的内存空间回收。这样,当垃圾回收器工作的时候,{name:'cc'}这个值占用的内存空间就会被回收。

这种方式曾今被Netscape Navigator 3.0使用过,但是有一个严重问题:循环引用。

function circleReferenceProbem(){
  let objectA = new Object()
  let objectB = new Object()
  objectA.someOtherObject = objectB
  objectB.anotherObject = objectA
}

执行这个函数后,因为这两个引用值的引用次数永远不会为0,垃圾回收器永远不会回收它们占用的内存空间。

JS垃圾回收器的性能

因为JS垃圾回收器是每隔一个周期就执行一次垃圾回收。

如果为变量分配的内存数量不大的话,那么垃圾回收器的回收工作量就不大。但是,当垃圾回收器的工作量过大的时候,就很可能会出现卡顿的情况。

JS中管理内存的建议

1、尽量少用全局变量

2、尽可能手动清除变量的引用

推荐教程:《JS教程》

以上就是快速理解 JavaScript 的垃圾回收的详细内容,更多请关注ki4导航其它相关文章!

js中输出的方式有哪些 找JS教程就上ki4.cc (>^ω^<)

本文为大家介绍了js中的四种输出方式,具有一定的参考价值,希望可以帮助到大家。js中的输出方式有:1、window.alert();2、document.write();3、innerHTML;4、console.log()。

标签

版权说明
免责声明:本文文章内容由ki4导航网发布,但不代表本站的观点和立场,具体内容可自行甄别.