Memory leaks 移除whsihtml5后可能出现内存泄漏

Memory leaks 移除whsihtml5后可能出现内存泄漏,memory-leaks,garbage-collection,heap,google-chrome-devtools,wysihtml5,Memory Leaks,Garbage Collection,Heap,Google Chrome Devtools,Wysihtml5,您可以查看“简单测试”页面 该页面包含一个文本区域、一个“创建”按钮和一个“删除”按钮。 单击“创建”按钮时,“文本区域”用于创建“wysihtml5”。 单击“删除”按钮时,“wysihtml5”将被删除,代码如下: $("iframe.wysihtml5-sandbox, input[name='_wysihtml5_mode']").remove(); $("body").removeClass("wysihtml5-supported"); (请参阅以供参考。) 我遇到的问题是,wys

您可以查看“简单测试”页面

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

$("iframe.wysihtml5-sandbox, input[name='_wysihtml5_mode']").remove();
$("body").removeClass("wysihtml5-supported");
(请参阅以供参考。)

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

我用谷歌chrome开发工具拍摄了几张堆快照

  • snap1-最初加载页面时
  • snap2-创建wysihtml5后
  • snap3-删除wysihtml5后

  • 有内存泄漏吗?如果有,我如何防止它发生?(我的主干应用程序可能会创建/销毁100+所见即所得的HTML5,因此清除所见即所得的HTML5非常重要!)

    首先,不清楚测试是否正常工作,因为当我单击“创建”按钮时,页面没有发生任何变化。有一个可重复的测试会更有用

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

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


    此技术已被描述。

    感谢您的反馈。我刚刚更新了html,以更好地反映create/remove的重复性。您可以在这里获取源代码,以防仍然存在问题。当我比较快照时,我看到大量分离的元素以黄色突出显示,保留“iframe”元素是我特别关心的一个。有什么想法吗?我还是做错了吗?