内存溢出无非就是不能给垃圾回收机制回收,这个前提下是这部分内容已经是你不在使用的了。
网上有常见的四种内存溢出的情况。
传送门:链接
而使用jq的话
1、不要使用html方法删除DOM节点,因为这样其实只是删除了页面上的,内存里的还没有删除,建议使用:empty和remove方法
2、定时器不使用要清除,clearInterval,clearTimeout
3、变量声明不要忘了,因为这样会容易造成全局污染,还有内存溢出,虽然消耗少,但积少成多,使用严格模式杜绝"use strict"
4、闭包问题,这个常见问题,因为闭包的变量被引用是无法被垃圾回收机制回收的,引用既在函数链里被使用
5、ajax也可能出现这样的问题,如果不断地申请ajax请求,那么ajax就会不断的创建XMLHttpRequest对象,有些jq版本存在这个问题
6、事件不再使用记得清除,使用off方法,不是事件也会缓存下来,消耗内存
其实内存溢出就是不再使用的东西没有清除,所以还有很多种可能造成,比如缓存,数组,对象之类的,保存在内存中,如果不及时清除
都会造成这样的问题,而出现浏览器卡顿,缓慢,崩溃,无相应之类的。
所以很多插件都有一套自己清除方法,就是为了清除已经不被使用的部分。
chrome浏览器有个工具可以使用一样,上面的传送门就有介绍,就是TimeLine和profiles这两个。可以帮助找问题所在。
一般情况是不会出现这样的问题的,但如果是一些一直开启的浏览器的屏幕,那么这个就是问题了,因为积少成多,架不住时间的考验,
慢慢的就会出现浏览器的问题。