对 javascript 中的垃圾收集器计时器有任何想法吗? 假设我在脚本下面运行,将运行并且关联的范围链变量将运行 正好在 100 毫秒后进行垃圾收集?还是一些边距?
我在 stackoverflow 中阅读了一篇关于垃圾收集的帖子,但我仍然有这个问题。 以下是我的问题?
- 是否有任何 SYSTEM TIMER 运行垃圾回收任务?
如果不是,它是基于事件的吗?,意味着如果不再存在引用,垃圾 收集器将立即回收内存。
function call_me() { //calculate elapsed_time - code not given if(elapsed_time <100) { setTimeout(call_me,25); } else{ final_call(); } } call_me();
最佳答案
每个用户代理都以不同的方式实现垃圾回收。所有用户代理都使用 mark-and-sweep定期重复的方法,因此没有“立即”;当它发生时它就会发生。
每个代理都有不同的阈值和机制来确定 GC 何时通过。它不一定是事件驱动的(也许你可能会说它是基准驱动的、事件启动的),当然也不是基于计时器。
超出范围的函数立即有资格进行垃圾回收,但实际上不知道何时会发生。
从开发人员的 Angular 来看,这确实是您不应该考虑的事情。没有任何方法可以停止或启动 GC,也没有任何迹象表明它发生了。查看 Firefox 中的 about:memory
了解一些有趣的琐事(下面有几个可疑的按钮可以“控制”GC)。这就是你所能得到的一切,而且这些数据对脚本来说是不可用的。
关于Javascript - 垃圾收集器计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216843/