• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 快速理解 JavaScript 的垃圾回收

快速理解 JavaScript 的垃圾回收

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了快速理解,JavaScript,垃圾回收等相关知识,希望对您有所帮助

快速理解 JavaScript 的垃圾回收

前言

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

JS垃圾回收的原理

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

JS垃圾回收的策略

标记清除

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

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

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

引用计数

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

当声明了一个变量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、尽可能手动清除变量的引用



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 快速理解 JavaScript 的垃圾回收

相关文章

  • 2022-04-29laravel与thinkphp之间的区别与优缺点
  • 2022-04-29Photoshop制作水彩喷溅效果的艺术字
  • 2022-04-29HTML用JS导出Excel的五种方法
  • 2022-04-29如何在PHP中获取数组单元数量
  • 2022-04-29CSS如何禁止元素的点击事件
  • 2022-04-29浅谈php正则替换函数preg_replace的用法
  • 2022-04-29如何解决strict standards php报错问题
  • 2022-04-29javascript调试之console.table()
  • 2022-04-29js实现滑动进度条
  • 2022-04-29浅谈Angular中elem.scope()、elem.isolateScope和$compile(elem)(scope)中scope的区别

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Phpcms自定义URL规则技巧
    • Photoshop制作非常简洁的灰色质感导航栏
    • DedeCMS获取栏目图片如果没有栏目图片调用顶级图片
    • jQuery怎么实现鼠标经过改变背景色
    • 怎么用php实现支付宝支付
    • Photoshop制作金属颓废效果的黄金字教程
    • PHP高清晰度无损图片压缩功能的实现代码
    • PhotoShop打造石头材质金属文字特效制作教程
    • 去除织梦CMS后台头部多的一行空白
    • Flex中对表格中某列的值进行数字格式化保留两位小数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有