Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果在调用setTimeout后未调用ClearTimeout,是否存在内存泄漏问题_Javascript - Fatal编程技术网

Javascript 如果在调用setTimeout后未调用ClearTimeout,是否存在内存泄漏问题

Javascript 如果在调用setTimeout后未调用ClearTimeout,是否存在内存泄漏问题,javascript,Javascript,调用setTimeout后,如果不调用cleartimout,是否存在内存泄漏问题 谢谢。否。如果要阻止挂起的setTimeout发生,只需调用clearTimeout。setTimeout发生后,计时器id不再有效,但幸运的是使用无效的计时器id调用clearTimeout是无害的 如果您看到内存泄漏发生,则问题出在其他地方。有时设置超时会导致内存泄漏。。。见以下文章: 不过,请注意IEx具有垃圾收集器的微妙之处;我认为,如果在Javascript闭包中引用DOM变量,那么收集机制就会变得混乱

调用
setTimeout
后,如果不调用
cleartimout
,是否存在内存泄漏问题


谢谢。

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


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

有时设置超时会导致内存泄漏。。。见以下文章:

不过,请注意IEx具有垃圾收集器的微妙之处;我认为,如果在Javascript闭包中引用DOM变量,那么收集机制就会变得混乱,并且在请求结束时不会被破坏:最终这将成为内存泄漏。我认为这是因为DOM变量和内部JS变量是由两个不同的收集器收集的,它们不能正确地交流不再使用的内容

我认为可以通过将变量设置为null来解决此问题:

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

这会显式地启动垃圾收集。

为什么要问这个问题?你能详细说明一下吗?使用setTimeout时是否遇到内存泄漏?你的目标浏览器是什么?如果没有调用setTiemout怎么办?@jsbisht这没有意义。从未调用setTimeout的唯一原因是从未进入事件循环。例如,如果您有一个无限循环,则不会调用setTimeout、网络I/O或磁盘I/O