【发布时间】:2012-08-26 07:44:26
【问题描述】:
我有将页面加载到 iframe 中的链接。我一直在使用 Google Chrome 的内存堆分析器监控内存中的数据累积,我注意到内存中有一些泄漏。
我加载了页面并拍摄了第一个快照,总和为2.69 MB。我单击了在 iframe 中打开页面的链接,并拍摄了另一个快照,总共给了我14.58 MB。我使用以下 jquery sn-p 删除了 iframe:
$('#myframe').unbind();
$('#myframe').remove();
/*
* By the way, I also tried $('#myframe > *') as a selector.
* It still didn't work. Even if it would, it doesn't look like a viable solution to me.
* It looks too resource intensive.
*
* I forgot to mention that I am not using Ajax to load my pages
*/
我又拍了一张快照,得到了5.28 MB,这表明2.59 MB与初始值有偏差,根据我的理解,这表明内存泄漏。
现在,我的问题是:如果我删除了一个 iframe(包括其中加载的文档),垃圾收集器是否发现有必要从内存中删除该文档中包含的所有对象?还是我必须手动执行此操作?
我认为如果我将文档加载到 iframe 中,它的大小不会影响父页面上的内存使用。虽然我认为它将被视为一个单独的窗口,但显然这不是我的一个明智的假设。
关于如何解决这个问题的任何建议?
谢谢。
【问题讨论】:
-
这个线程似乎是这个问题的一个很好的切入点:stackoverflow.com/questions/3785258/…。
-
父窗口卸载后内存会怎样?
-
谢谢。如果我刷新父窗口,内存会回到
2.69 MB
标签: javascript jquery memory-management iframe