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

大型行业门户网站开发建设方案dw制作一个手机网站模板下载地址

大型行业门户网站开发建设方案,dw制作一个手机网站模板下载地址,网站建设协议 合同,网站未备案的后果1、是什么#xff1f;内存泄露#xff08;Memory leak#xff09;是在计算机科学中#xff0c;由于疏忽或错误造成程序未能释放已经不再使用的内存。并非指内存在物理上的消失#xff0c;而是应用程序分配某段内存后#xff0c;由于设计错误#xff0c;导致在释放该段内…1、是什么内存泄露Memory leak是在计算机科学中由于疏忽或错误造成程序未能释放已经不再使用的内存。并非指内存在物理上的消失而是应用程序分配某段内存后由于设计错误导致在释放该段内存之前就失去了对该段内存的控制从而造成了内存的浪费。对于持续运行的服务进程必须及时释放不再用到的内存。否则内存占用越来越高造成应用程序卡顿或崩溃轻则影响系统性能重则导致进程崩溃。2、垃圾回收机制JavaScript具有自动垃圾回收机制Garbage Collection即执行环境会负责管理代码执行过程中使用的内存。原理垃圾收集器会定期周期性找出那些不再继续使用的变量然后释放其内存。 两种方式一标记清除--JavaScript最常用的垃圾回收机制当变量进入环境时就标记这个变量为”进入环境“。进入环境的变量所占用的内存就不能释放当变量离开环境时则标记为”离开环境“。垃圾回收程序运行的时候会标记内存中存储的所有变量。然后它将所有在上下文中的变量、以及被在上下文中的变量引用的变量的标记去掉。在此之后再被加上标记的变量就是待删除的了原因是任何在上下文的变量都访问不到它们了。随后垃圾回收程序做一次内存清理销毁带标记的所有值并回收它们的内存。var m 0,n 19 // 把 m,n,add() 标记为进入环境。 add(m, n) // 把 a, b, c标记为进入环境。 console.log(n) // a,b,c标记为离开环境等待垃圾回收。 function add(a, b) {avar c a breturn c }二引用计数语言引擎有一张”引用表“保存了内存里面所有的资源通常是各种值的引用次数。如果一个值的引用次数是0就表示这个值不再用到了因此可以将这块内存释放。如果一个值不再需要了引用次数却不为0.垃圾回收机制无法释放这块内存从而导致内存泄露。例如const arr [1, 2, 3, 4];console.log(hello world);//数组[1, 2, 3, 4]是一个值会占用内存。变量arr是仅有的对这个值的引用因此引用次数为1。尽管后面的代码没有用到arr它还是会持续占用内存。如果需要这块内存被垃圾回收机制释放只需要设置如下arrnull//通过设置arr为null就解除了对数组[1,2,3,4]的引用引用次数为0就被垃圾回收了小结有了垃圾回收机制不代表不用再关注内存泄露。那些很占空间的值一旦不再用到需要检查是否还存在对它们的引用如果是的话则必须手动解除。3、常见内存泄露情况定时器、函数闭包、没有清理对DOM元素的引用、使用事件监听addEventListener监听的时候再不监听的时候使用removeEventListener取消对事件的监听。意外的全局变量function foo(arg){barthis is a hidden global variable }由this创建的全局变量function foo(){this.variablepotential accidental global variable } foo()//foo调用自己this指向了全局对象window这两种情况可以通过使用严格模式use strict避免意外的全局变量。定时器var someResourcegetData() setInterval(function(){var nodedocument.getElementById(Node)if(node){//处理node和someResourcenode.innerHTMLJSON.stringify(someResource)} ,1000) 如果id为Node的元素从DOM中移除该定时器仍会存在同时因为回调函数中包含对someResource的引用定时器外面的someResource也不会被释放闭包function bindEvent(){var objdocument.createElement(XXX)var unusedfunction(){console.log(obj,闭包内引用obj obj不会被释放)}objnull//解决方法 } var foobindEvent() //理论上说bindEvent()函数内部定义的变量应当在执行完bindEvent之后就销毁但是foo引用了bindEvent方法按照引用计数法是不会回收bindEvent内部定义的变量的这就会造成内存泄露。没有清理对DOM元素的引用同样造成内存泄露const refAdocument.getElementById(refA) document.body.removeChild(refA)//dom删除了refA元素 console.log(refA,refA)//引用refA打印出整个dom元素 refAnull console.log(refA,refA)//解除引用const wrapDOM document.getElementById(wrap); wrapDOM.onclick function (e) {console.log(e);};// some codes ...// remove wrapDOM wrapDOM.parentNode.removeChild(wrapDOM);4、内存泄露的排查手段Chrome浏览器打开F12开始记录Performance查看js堆内存占用信息点击Stop停止录制。选中JS Heap下面展现出来的一条蓝线就是代表了这段记录过程中JS 堆内存信息的变化情况。如果蓝线一直呈上升趋势那么说明有很多未被释放的内存。至于这些内存是否泄露还是在使用需要进一步排查。Memory精确定位内存使用情况点击按钮生成应用在当前时刻的内存快照信息。当生成第一个快照的时候开发者工具窗口显示了很详细的内存占用情况Constructor占用内存的资源类型。Distance当前对象到根的引用层级距离Shallow Size对象所占内存不包含内部引用的其它对象所占的内存单位字节Retained Size对象所占总内存包含内部引用的其他对象所占的内存单位字节每项展开就可以查看更详细的数据信息。可以再次切回网页继续操作几次然后再次生成一个快照选择Comparison可对两次快照进行更详细的比对#New新分配的内存空间数#Deleted销毁的内存空间数#Delta内存回收差值新分配-销毁如果是正值代表新生成的内存多释放的内存少。其中的闭包closure项如果是正值说明存在内存泄露5、内存泄露的解决办法5.1、使用严格模式避免不经意间的全局变量泄露use strict function foo(){b2 } foo()// ReferenceError: b is not defined5.2、关注DOM生命周期及时销毁DOMconst wrapDOM document.getElementById(wrap); wrapDOM.onclick function (e) {console.log(e);};// some codes ...// remove wrapDOM wrapDOM.onclick null; wrapDOM.parentNode.removeChild(wrapDOM);或者可以使用事件委托的手段统一处理事件减少由于事件绑定带来的额外内存开销document.body.onclick function (e) {if (isWrapDOM) {// ...} else {// ...} }5.3、避免过度使用内包大部分的内存泄漏还是由于代码不规范导致的。代码千万条规范第一条代码不规范开发两行泪。
http://www.w-s-a.com/news/787189/

相关文章:

  • 湖南城市建设技术学院官方网站青海省建设局网站
  • 响应式网站有什么区别百度网站官网
  • 金华企业自助建站系统长沙建站公司模板
  • 云主机 做网站友情链接网站
  • 定制型网站设计天津网站模板建站
  • 为什么公司网站打开很慢wordpress汉化插件
  • 用dw做教学网站做网站用什么配置笔记本
  • 秦皇岛网站制作服务无网站无产品链接如何做SOHO
  • 国际婚恋网站做翻译合法吗南宁网络推广有限公司
  • 济南做网站公司排名销售市场规划方案
  • 营销型网站定制珠海建站网站
  • 企业网站代码wordpress页面重定向循环
  • 厦门网站建设哪家便宜用wordpress做企业网站
  • 网站备案有幕布python 做网站速度
  • 旅游网站模板psd网站后台维护主要做什么
  • 晋江做任务的网站网站如何设置关键词
  • 呼伦贝尔网站建设呼伦贝尔ps网页设计心得体会
  • 字母logo设计网站动画设计方案及内容
  • 怎样做网站建设方案wordpress 附件预览
  • 网站内容编辑wordpress cron原理
  • 户外商品网站制作建筑网络图片
  • 注册了网站怎么建设做网站是学什么专业
  • 济南建设网站哪里好网站色哦优化8888
  • 什么网站做简历最好外贸公司网站大全
  • 衡水网站托管企业二级网站怎么做
  • 丹阳网站建设公司旅游类网站开发开题报告范文
  • 地方门户网站建设苏州网站优化建设
  • 谁用fun域名做网站了网络营销的三种方式
  • 织梦网站上传天津网站建设电话咨询
  • 论坛网站搭建深圳网