【问题标题】:Possible memory leak after whsihtml5 removal删除 whsihtml5 后可能存在内存泄漏
【发布时间】:2013-04-24 20:05:07
【问题描述】:

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

该页面包含一个文本区域、一个“创建”按钮和一个“删除”按钮。 单击“创建”按钮时,“textarea”用于创建“wysihtml5”。 当点击“remove”按钮时,“wysihtml5”被移除,代码如下:

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

(请参考this。)

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

我使用 google chrome 开发工具拍摄了一些堆快照。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    here 描述了这种技术。

    【讨论】:

    • 感谢您的反馈。我刚刚更新了 html 以更好地反映创建/删除的重复。您可以在此处获取源代码,github.com/yial2/wysihtml5MemoryLeakTest/edit/master/…,以防万一您仍然遇到问题。当我比较快照时,我看到大量以黄色突出显示的分离元素,保留的“iframe”元素是我特别关心的一个。任何想法?我还是做错了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2012-09-23
    • 2020-06-12
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多