0

您可以在此处查看简单的测试页面

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

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

(请参阅this以供参考。)

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

我用谷歌浏览器开发工具拍了几张照片。

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

在此处输入图像描述

有内存泄漏吗?如果有,我该如何防止它发生?(我的主干应用程序可能会创建/销毁 100 多个 wysihtml5,因此彻底删除 wysihtml5 非常重要!)

4

1 回答 1

1

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

尽管如此,我还是做了测试,发现测试页面(工作与否)没有泄漏。在每次单击时,它会分配少量内存并在下次单击时释放它。

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

此处描述了此技术。

于 2013-05-01T07:20:54.910 回答