0

後,您可以查看簡單的測試頁面here可能的內存泄漏whsihtml5去除

該頁面包含一個文本區域,一個「創建」按鈕和「刪除」按鈕。 點擊「創建」按鈕後,「textarea」用於創建「wysihtml5」。 當點擊「刪除」按鈕,「wysihtml5」是用下面的代碼刪除:(請參考this供參考)

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

我遇到的問題是,所述存儲器由wysihtml5創建的元素(textarea,iframe和鏈接)似乎被保留在內存中。

我使用google chrome開發工具獲取了很少的堆快照。

  1. snap1 - 當頁面初始加載
  2. snap2 - 在wysihtml5創建
  3. snap3之後 - 在wysihtml5被移除之後

enter image description here

是否有內存泄漏?如果有,我如何防止它發生? (我的骨幹應用程序可能會創建/銷燬100多個wysihtml5,因此清除wysihtml5非常重要!)

回答

1

首先,不清楚測試是否正常工作,因爲當頁面沒有任何反應時點擊創建按鈕。有一個可重複的測試會更有用。

儘管如此,我做了測試,發現測試頁(工作與否)沒有泄漏。 在每次點擊時,它會分配少量內存並在下次單擊時釋放它。

聽起來像頁面在第一次創建時創建分離的dom樹並保持它活着。 在第一個快照之前執行熱身創建和刪除操作並過濾除第一個和第二個快照之間分配的對象以外的所有內容是有意義的。

該技術被描述爲here

+0

感謝您的意見。我只是更新了html,以更好地反映創建/刪除的重複。你可以在這裏獲取源代碼,https://github.com/yial2/wysihtml5MemoryLeakTest/edit/master/wysihtml5MemoryLeakTest.html,以防萬一你仍然有問題。當我比較快照時,我會看到大量以黃色突出顯示的分離元素,保留的「iframe」元素尤其值得我關注。任何想法?我仍然做錯了嗎? – yial2 2013-05-03 05:57:06