在使用jQuery的時候不小心的記憶體洩漏

2022-01-30 02:08:36 字數 755 閱讀 8147

在寫chart widget的時候,我們使用了第三方的svg類庫raphael。結果客戶給我們報了乙個記憶體洩漏的bug,我們在測試的時候確實存在記憶體洩漏。經過測試發現了問題的原因。raphael本身存在一些問題,還有就是在和jquery使用的時候,我們也沒有注意到乙個問題。

在建立jquery物件的時候,jquery會將jquery快取起來,放到jquery.cache物件中。在呼叫jquery的remove方法的時候,會清理掉jquery的快取。我們的問題就出在這裡,在raphael中,自己有remove方法來清楚raphael建立的raphael物件和svg/vml元素。而在chart中,我們會使用jquery在raphael建立的svg/vml元素上。這樣在呼叫raphael的remove方法的時候,就不能移除jquery快取。由此造成了物件一直保留記憶體中。

在raphael中,自己的animate和remove方法也存在說明,就是在animate的時候,會建立animate需要的一些物件快取到raphael物件中,在呼叫stop方法的時候會清理掉這些元素。而當remove的時候,僅僅做了remove的事情,並沒有移除掉這些物件。而在文件中也沒有提到需要注意的問題。我們在使用的時候,就沒有注意到正在做動畫的元素在remove的時候直接呼叫remove方法,沒有在之前調stop。這樣也造成了物件不能銷毀。

上述兩個問題是造成記憶體洩漏的主要原因。在試用jquery的時候,如果要刪除dom物件的話,最好採用jquery的remove方法,否則可能會出現諸如我們那樣的問題。在jquery的remove方法中還會清楚掉時間繫結等資訊。

不小心忘記了linux的root密碼

很多時候,由於root使用者,我們並不常用,所以忘記密碼是常有的事,那麼我們如何解決呢?我目前知道的有兩種開機時進入單使用者模式可以直接修改root密碼 方法一 第一步 開機時,會進入乙個3秒的等待狀態,如下圖所示 這個時候需要你快速的將滑鼠點入螢幕 我用的虛擬機器,所以需要手動點入進去 緊接著就會...

不小心git rebase之後的解決辦法

有時候我們使用git推送資料到伺服器的時候會發生推送失敗的現象 就像這樣 提示 rejected master master fetch firsh 然後我就信了他的邪,把我本地的檔案回退到了之前的版本 哎喲,我那個難受的啊 bash 上的提示是這樣的 試了好多辦法都不能吧 回退給撤銷 然後終於在乙...

電腦不小心刪除的檔案怎麼恢復?

電腦不小心刪除的檔案怎麼恢復?在我們用電腦的時候,不可避免的會不小心刪除重要的檔案,但是不要著急,因為電腦資料不是刪掉就恢復不了的東西,可以採用一些合適的方法,我們就能找回檔案了。先給大家介紹第一種方法 借助登錄檔恢復。利用系統登錄檔進行恢復 第一步 開啟電腦,輸入win r鍵,並開啟執行視窗,輸入...