【发布时间】:2011-12-21 23:54:40
【问题描述】:
我知道,在具有大量 UI 元素且完全基于 Ajax 的应用程序中正确管理内存并不容易(在我的应用程序中,页面永远不会重新加载)。但我想了解以下行为:
我有一个根元素,一次必须附加一个子元素(认为它是根元素是应用程序容器,子元素是单个页面)。 每当我在子内容之间切换时,我都会使用 jQuery.remove() 删除以前的内容,但我看到内容实际上已从 DOM 中分离出来,但它仍保留在内存中。
- 根目录和两个子内容(child1 和 child2)
- 我从 child1 切换到 child2,要求我的应用管理器在附加 child2 之前删除 child1
- child2 正在附加(我可以看到),但我仍然可以使用管理 child1 的代码中的 child1 元素
child1 代码(包含对 child1 DOM 的引用):
function testaccess(){
load_and_remove(child2);
var child1DOM = get_this_dom();
}
child1DOM 仍然存在,我可以对其进行操作,就好像它仍然附加到 DOM 一样。
好的,我想 jQuery.remove() 和 GC 将无法释放内存,直到我有可以访问它的代码,但即使我不调用 get_this_dom(),即使在退出 testaccess( ),我看到FF内存没有减少...
我想知道当我退出child1时如何让GC释放所有内存。
【问题讨论】:
-
快速浏览右侧的“相关”问题链接发现了一个类似的案例 -> stackoverflow.com/q/768621/104380
标签: javascript jquery memory-management memory-leaks