繁体   English   中英

如果在调用setTimeout后没有调用clearTimout,是否存在内存泄漏问题

[英]Is there memory leak issue if not calling clearTimout after calling setTimeout

调用setTimeout ,是否存在内存泄漏问题而没有调用clearTimeout

谢谢。

如果你想要阻止挂起的setTimeout发生,只需要调用clearTimeout。 发生setTimeout后,timer id不再有效,但幸运的是调用带有无效计时器id的clearTimeout是无害的。

如果您发现内存泄漏,则问题出在其他地方。

有时setTimeout会导致内存泄漏...请参阅以下文章: setTimeout内存泄漏

但请注意,IEx有一个垃圾收集器的微妙之处; 我认为如果你在Javascript闭包中引用一个DOM变量,那么收集机制就会混淆,并且在请求结束时不会被删除:最终这会成为内存泄漏。 我认为这是因为DOM变量和内部JS变量被两个不同的收集器收集,并且它们没有正确地沟通不再使用的东西。

我想你可以通过将变量设置为null来解决这个问题:

setTimeout(function(){
    myFunction(parameter); 
    parameter = null
}, myTimeout);

这显式地设置了垃圾收集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM