js内存泄漏问题

最近在学习关于内存管理方面的知识,对于内存泄漏的问题还是一知半解,主要有这几个疑问:
1.现代浏览器是否已经解决内存泄漏问题
2.只要是闭包就一定会存在内存泄漏吗
3.dom对象和js对象循环引用一定会造成内存泄漏吗
4.使用框架能避免一定的内存泄漏问题吗,如jquery、vue等

阅读 2.9k
2 个回答
  1. 内存泄漏很多原因是因为程序员的疏忽或是失误,或是基本没有在意吧233.浏览器只能将所有未被引用的资源回收,至于被引用的资源,例如dom节点或是js变量,浏览器是无法识别出其是否有用,从而判断是否需要被回收。
    不过现代浏览器的确是解决了一些IE低版本下由于内存回收机制不完善导致的内存泄漏问题。
  2. 闭包是一定会有内存泄漏的,只不过是多少的问题
  3. 这种情况其实比闭包更为常见一些,也更加隐蔽,一般出现于事件监听内调用了自身。
  4. 框架与内存泄漏关系不是很大,但是在某些地方上是有一些帮助的,大概是在于减少代码量与提供较好的工具方法,使得犯错几率减少,比如vue帮助进行了删除元素时候同时去除监听事件,但是对于其他类型的内存泄漏问题可能就没有任何影响。

1:没有,浏览器只是帮助我们GC,省去了我们手动GC
2:不是,闭包使用肯定有空间开销,只有使用不当才会内存泄漏
3:不会,IE6没处理DOM节点和JS之间的循环引用(因为BOM和DOM对象的GC策略都是引用计数),可能会出现内存泄漏,现代浏览器已经不需要这么做了,如果节点无法再被访问的话,监听器会被回收掉
4:不能,框架使用不当照样会内存泄漏

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题