删除whsihtml5后可能发生内存泄漏

时间:2013-04-30 19:41:53

标签: memory-leaks garbage-collection heap google-chrome-devtools wysihtml5

您可以查看简单的测试页here

该页面包含一个文本区域,一个“创建”按钮和一个“删除”按钮。 单击“创建”按钮时,“textarea”用于创建“wysihtml5”。 单击“删除”按钮后,将使用以下代码删除“wysihtml5”:

$("iframe.wysihtml5-sandbox, input[name='_wysihtml5_mode']").remove();
$("body").removeClass("wysihtml5-supported");

(请参阅this以供参考。)

我遇到的问题是由wysihtml5创建的元素(textarea,iframe和链接)的内存似乎保留在内存中。

我用google chrome dev工具拍摄了一些堆快照。

  1. snap1 - 最初加载页面时
  2. snap2 - 创建wysihtml5之后
  3. snap3 - 删除wysihtml5之后
  4. enter image description here

    是否有内存泄漏?如果有,我该如何防止它发生? (我的主干应用程序可能会创建/销毁100+ wysihtml5,所以干净删除wysihtml5非常重要!)

1 个答案:

答案 0 :(得分:1)

首先,目前还不清楚测试是否正常,因为单击“创建”按钮时页面没有任何反应。进行可重复的测试会更有用。

然而,我做了测试,发现测试页面(工作与否)没有泄漏。 在每次点击时,它会分配少量内存并在下次点击时释放它。

听起来像页面在第一次创建时创建了分离的dom树并使其保持活动状态。 在第一个快照之前进行预热创建和删除操作并筛选除第一个和第二个快照之间分配的对象之外的所有内容是有意义的。

这种技术被描述为here