我有 1 页应用程序,其中 UI 在主页上处理,控制器和模型加载在不可见的框架中。在某些时候,那些模型和控制器应该改变,所以我删除了框架,创建了一个具有不同控制器和模型的新框架,并让它控制主页上的 UI。
所以问题是,一旦框架从 DOM 中删除,在框架内运行的 JS 是否会从内存中清除,或者我是否正在查看潜在的内存泄漏?
我有 1 页应用程序,其中 UI 在主页上处理,控制器和模型加载在不可见的框架中。在某些时候,那些模型和控制器应该改变,所以我删除了框架,创建了一个具有不同控制器和模型的新框架,并让它控制主页上的 UI。
所以问题是,一旦框架从 DOM 中删除,在框架内运行的 JS 是否会从内存中清除,或者我是否正在查看潜在的内存泄漏?
所以问题是,一旦框架从 DOM 中删除,在框架内运行的 JS 是否会从内存中清除,或者我是否正在查看潜在的内存泄漏?
当最后一个未完成的引用被释放时,框架中的 JS 等有资格从内存中删除。因此,您可以从 DOM 中删除框架,但如果您仍然有对它的引用(例如,在另一个框架/窗口中的 JavaScript 变量中),那么它将保留在内存中。或者,如果您在另一个框架/窗口中仍然有引用在您要删除的框架中创建的对象的变量,它们(但不一定是框架)将被保留。
如果您没有任何变量指向框架或其中的东西,并且您将其从 DOM 中删除,那么它将有资格进行垃圾收集。何时发生取决于浏览器,但它会发生。
浏览器管理其内存使用;JavaScript 造成的任何内存泄漏实际上都是浏览器本身的缺陷,尤其是在您所描述的情况下。在 JavaScript 中最接近“内存泄漏”的方法是在全局范围内实例化您不会继续使用的对象;这应该只影响长时间运行的页面(动态网络应用程序如 GMail 等)