wijmo用戶反饋了一個RadialGauge控件內存泄露的bug,採用chrome監控內存使用狀況,發現明顯的內存泄露,在前面的文章中我就發現了jQuery內存泄露的問題,此次再次發現此問題,天然就聯想到之前發現的問題。因爲jQuery會緩存一些數據在$.cache中,在調用remove方法的時候,會將這些數據清除掉。可是若是DOM元素不是採用jQuery刪除的,就會發生內存泄露。html
用戶場景是這樣的: chrome
用戶放了一個RadialGauge控件和Timer控件在UpdatePanel中,而後定時去刷新gauge。通過調試發現問題出在更新updatepanel內容的時候,MS AJAX framework直接將服務器獲得的內容設置到updatepanel元素的innerHTML上。這也就是未經過jQuery的remove方法移除了DOM對象。緩存
發現了這個問題以後,天然就想到去重寫系統的updatepanel方法,在設置innerHTML以前調用Gauge控件的destroy方法銷燬相關對象。服務器