2011-01-12 65 views
1

的例子來說明這個問題可以在這裏找到:MooTools的事件泄漏

link text

試驗表明,裝有已連接點擊事件的元素變量基本MooTools的類。還有一個「清理」功能可以刪除事件並使元素變量無效。

我的問題是,當我循環千次創建「LeakClass」實例並清理它時,它會導致大量內存泄漏,就像沒有明天一樣。我在IE8和Chrome上測試了這個。

另一方面,我注意到,如果我註釋掉添加「click」事件的行,代碼不會泄漏。

有人可以幫我構建類/事件的方式,它不會泄漏。

在此先感謝。

回答

1

你想達到什麼目的?

this.element = null;不會將元素從DOM中解開或銷燬它,它只是刪除對它的引用。要做到這一點,你應該使用this.element.destroy();調用內部清理功能 - 首先應用子節點的一點點GC,然後執行.empty(),然後將其從DOM中移除並最終完全刪除它。你的代碼將會創建大量的元素,這些元素將不再被引用,但缺乏引用並不意味着缺乏存在。每個元素都會自己使用內存,事件或不是。

+0

我很欣賞快速反應。我在這裏試圖模擬的是......當我運行一個不斷添加和刪除具有事件元素的AJAX應用程序時,會發生什麼情況?應用程序會在一段時間後泄漏嗎?這就是爲什麼我要在循環中創建類實例,以查看元素的處置和事件是否不泄漏。正如我在上面的問題上所陳述的......當我刪除點擊事件行時,即使你沒有調用「this._element.destroy()」,代碼也不會泄漏。我的問題是......我如何讓「LeakClass」不泄漏? – 2011-01-13 11:38:21