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

快速理解 JavaScript 的垃圾回收

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了快速理解,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 的垃圾回收

相关文章

  • 如何解决SSH连接Linux超时问题
  • Photoshop制作立体效果的图案艺术字
  • WordPress多站点不支持timthumb.php解决方法
  • Dedecms在php7下的一些常见问题
  • 解决Thinkphp5+部署到宝塔LNMP后404 NOT FOUND的问题
  • ThinkPHP5实现图片水印平铺效果
  • 百度频繁变更算法,我们该怎么办?
  • ThinkPHP5访问怎么去除/public/index.php
  • PHP中require是什么意思
  • Photoshop绘制超酷的3D门牌艺术字教程

文章分类

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

最近更新的内容

    • Photoshop制作创意的云朵图案艺术字教程
    • JavaScript中字符串(string)如何转json
    • 三种在php程序中嵌入html代码的方法
    • 重新对百度支付进行编写封装(百度智能小程序支付)
    • 介绍Laravel unit test : 模拟认证的用户
    • 如何实现PHP中如果让字符串直接解析函数
    • PHP如何使用面向对象魔术方法之__call函数
    • 搜索引擎优化中关键词的分类
    • Photoshop制作破碎玻璃字体效果教程
    • 三种ThinkPHP6中获取参数的方法

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

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