第32天 造成内存泄漏的操作有哪些?
Activity
wenyejie commentedon May 31, 2019
以前使用"引用计数"的时候, 还挺多的,
现在都使用"标记清除"好很多了
最起码循环引用之类的, 不会再内存泄漏了
我觉得比较可能的是, 创建了时间循环, setInterval, 但是没有没有释放掉, 这个比较容易造成内存泄漏
myprelude commentedon Jun 13, 2019
yuqingc commentedon Jul 1, 2019
递归,循环引用,闭包
cyj1209 commentedon Sep 13, 2019
现在的GC好像是越来越牛逼了,有时候感觉无效的闭包都能被回收掉(还没有做过测试)
1 闭包
2 无效的全局变量
3 addEventListener
4 setInterval
5 还有一种是递归的时候不用尾调用优化,如果层级比较深的话会造成内存消耗激增,有时候还会崩,但是只要递归完成了这些内存是会被释放的。
blueRoach commentedon Jul 1, 2020
bozaigao commentedon Oct 4, 2020
GC回收有两种实现方式:标记清除、引用计数
1、没有使用的全局变量;
2、闭包(闭包可以维持函数内部变量);
3、循环引用(引用计数不为0);
4、setInterval没有被清除;
smile-2008 commentedon Oct 10, 2020
死循环
过度递归
对页面中的一些 副作用没有清除
HNHED commentedon Sep 4, 2021
闭包
意外的全局变量
被遗忘的定时器
脱离dom的引用
github-cxtan commentedon Feb 23, 2022
xiaoqiangz commentedon May 31, 2022
闭包、死循环、定时器。
xiaoqiangz commentedon May 31, 2022
闭包、死循环、定时器。
never123450 commentedon Sep 5, 2023
在JavaScript中,可能会出现内存泄漏的操作有以下几种情况:
无限制的计时器或回调函数:如果创建了定时器或回调函数,并且没有正确清除或取消它们,它们会持续占用内存资源,导致内存泄漏。
未释放的DOM引用:在操作DOM元素时,如果保留了对这些元素的引用,即使元素已经被从页面中移除,引用仍然存在,从而导致内存泄漏。
闭包:当函数内部引用了外部函数的变量,即使外部函数执行完毕,这些变量仍然被闭包引用,导致内存无法释放。
大量数据的缓存:如果在应用程序中缓存了大量数据,而这些数据在后续的使用中不再需要,但仍然保留在内存中,就会造成内存泄漏。
循环引用:如果对象之间存在循环引用,即对象A引用了对象B,而对象B又引用了对象A,这会导致垃圾回收器无法正确释放内存,造成内存泄漏。
为了避免内存泄漏,可以采取以下措施:
通过合理的内存管理和资源释放,可以避免内存泄漏问题,提高应用程序的性能和稳定性。