当前位置: 首页 > news >正文

sql2008做查询网站百度广告平台电话

sql2008做查询网站,百度广告平台电话,北京最大网站建设公司排名,wordpress网页版入口看文目录 一、什么是垃圾回收 二.垃圾回收机制原理 三、垃圾回收方法 3.1 引用计数 3.2 标记清除 内存常见内存泄露以及解决方法 4.1 全局变量#xff1a; 4.2 定时器和回调函数 4.3 闭包 4.4 没有清理DOM元素引用#xff1a; 一、什么是垃圾回收 垃圾回收是一种自… 目录 一、什么是垃圾回收 二.垃圾回收机制原理 三、垃圾回收方法 3.1 引用计数 3.2 标记清除 内存常见内存泄露以及解决方法 4.1 全局变量 4.2 定时器和回调函数  4.3 闭包  4.4 没有清理DOM元素引用  一、什么是垃圾回收 垃圾回收是一种自动的内存管理机制。当计算机上的动态内存不再需要时就应该予以释放以让出内存。直白点讲就是程序是运行在内存里的当声明一个变量、定义一个函数时都会占用内存。内存的容量是有限的如果变量、函数等只有产生没有消亡的过程那迟早内存有被完全占用的时候。这个时候不仅自己的程序无法正常运行连其他程序也会受到影响。好比生物只有出生没有死亡地球总有被撑爆的一天。所以在计算机中我们需要垃圾回收。需要注意的是定义中的“自动”的意思是语言可以帮助我们回收内存垃圾但并不代表我们不用关心内存管理如果操作不当JavaScript 中依旧会出现内存溢出的情况。 二.垃圾回收机制原理 垃圾回收基于两个原理 1、考虑某个变量或对象在未来的程序运行中将不会被访问 2、向这些对象要求归还内存 而这两个原理中最主要的也是最艰难的部分就是找到“所分配的内存确实已经不再需要了”。 三、垃圾回收方法 现在各大浏览器通常用采用的垃圾回收有两种方法标记清除、引用计数。 3.1 引用计数 这是最初级的垃圾回收算法老牌浏览器使用IE。引用计数的策略是跟踪记录每个值被使用的次数。当声明了一个变量并将一个引用类型赋值给该变量时这个值得引用次数就加一如果该变量的值变成了另一个则这个值得引用次数就减一当这个值的引用次数为0的时候说明没有变量在使用这个值无法访问。由此可以将其占用的空间回收这些垃圾回收器就会在运行时清理掉引用次数为0的值占用的空间但这种方法容易引起内存泄漏因为这种方式没有解决循环引用的问题所以不建议使用 function fun4(){ var obj {}//引用类型变量c的引用计数为0 var o obj; //obj被o引用obj的引用计数为1 var m obj; //obj被m引用obj的引用计数为2 o {} //o不再引用objobj的引用计数减为1 m null //m不再引用objobj的引用计数减为0 } 但是引用计数存在一些问题循环引用 function fun5(){var f {};var g {};f.userName g;g.userName f;//由于f和g互相引用计数永远不可能为0} 3.2 标记清除 这是javascript中最常用的垃圾回收方式。当变量进入执行环境是就标记这个变量为“进入环境”。从逻辑上讲永远不能释放进入环境的变量所占用的内存因为只要执行流进入相应的环境就可能会用到他们。当变量离开环境时则将其标记为“离开环境”。 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记。然后它会去掉环境中的变量以及被环境中的变量引用的标记。而在此之后再被加上标记的变量将被视为准备删除的变量原因是环境中的变量已经无法访问到这些变量了。最后。垃圾收集器完成内存清除工作销毁那些带标记的值并回收他们所占用的内存空间。 function fun3(){ var a 1; var b 2; //函数执行时ab分别被标记进入环境 } fun3() 函数执行结束ab被标记 离开环境 被回收 但是也要注意 function fun1(){var obj {} } function fun2(){var obj {}return obj; } var a fun1(); var b fun2(); fun1 执行时为 obj 分配了一块内存但是随着函数执行结束obj占用的空间也就被释放了 fun2 执行时也为 obj 分配了内存但是由于 obj最终被返回赋值给了 b 导致其依然被使用所以 fun2 中的 obj 占用的内存不会被释放 内存常见内存泄露以及解决方法 4.1 全局变量 function foo() {this.bar2 默认绑定this指向全局 // 全局变量 window.bar2bar 全局变量; // 没有声明变量 实际上是全局变量window.bar } foo();解决方法在函数内使用严格模式》严格模式禁止this关键字指向全局对象function foo() {use strict; this.bar2 严格模式下this指向undefined; bar 报错; } foo(); 4.2 定时器和回调函数  当不需要setInterval或者setTimeout时定时器没有被clear定时器的回调 函数以及内部依赖的变量都不能被回收造成内存泄漏。var someResource getData(); setInterval(function() {var node document.getElementById(Node);if(node) {node.innerHTML JSON.stringify(someResource));// 定时器也没有清除}// node、someResource 存储了大量数据 无法回收 }, 1000);解决方法 在定时器完成工作的时候手动清除定时器。 4.3 闭包  闭包可以维持函数内局部变量使其得不到释放造成内存泄漏。 function bindEvent() {var obj document.createElement(XXX);var unused function () {console.log(obj,闭包内引用obj obj不会被释放);};// obj null; } 解决方法手动解除引用obj null。 4.4 没有清理DOM元素引用  var refA document.getElementById(refA); document.body.removeChild(refA); // dom删除了 console.log(refA, refA); // 但是还存在引用 能console出整个div 没有被回收解决办法refA null;
http://www.zqtcl.cn/news/88838/

相关文章:

  • 表白网站源码大全聊天软件开发妙招
  • 微网站制作域名已买 可以找其它人做网站吗
  • 一个模拟做实验的网站做个支付网站多少钱
  • 企业网站开发技术期末试题外链购买
  • 网站建设方面的书籍招聘做微信公众号网站维护
  • 建站网站推荐便宜的手机网站建设
  • 做广告公司网站建设价格免费网络推广怎么做
  • 怎样做企业网站宣传做游戏网站需要注意的问题
  • 福州网站搜索引擎优化房产做网站是什么意思
  • 20m带宽做网站够用吗wordpress页面导航收录
  • 产品分类 网站模板微信小程序注册方式选哪个
  • 做一个网站以及app多少钱免费一级域名网站
  • 广州网站排名优化报价网站开发外包费用
  • 购物网站有哪些?建设银行博士后招聘网站
  • 电脑 手机网站二合一源码网站源码站
  • 网站建设移交确认书怎么查公司网站可信度
  • 那些做电影视频网站的赚钱吗小程序制作样式
  • 网站可以做推广吗做羽毛球网站
  • 大型网站改版哪一个网站可以做任务拿佣金
  • 查询网站是否过期旅游网站的目的
  • 站酷网图片如何做好一个网站的推广
  • 家具品牌网站wordpress 三主题
  • 网站做优化必须要ftp吗湖北手机网站制作
  • 网站空间备案 昆明登录注册
  • 免费建站平台哪个好呼伦贝尔网站建设 设计
  • 免费企业网站建站百度账号24小时人工电话
  • 织梦网站更新黄冈贴吧黄冈论坛吧
  • 做网站能用python吗wordpress选择模板没
  • 衡阳网站优化山东建设监理协会官方网站
  • 制定网站建设方案网站建设怎么汇报