關於Jquery記憶體的釋放

2021-09-08 15:40:15 字數 778 閱讀 3678

專案進入尾聲,又是最恐怖的效能測試 (對著js的效能測試我只能做這個表情 -_-!   )

經過多次的**檢查和測試,確認已經把自己定的變數什麼的一大堆都已經用null處理,並且沒有明顯的迴圈引用,但結果進行使用者某一動作時,記憶體還是沒被全部**,而是線性增加,最後發現,問題都是出現在dom身上

主要是太相信jquery的empty()和 remove(),以為他們會把dom都清理了,結果浪費了我兩天的時間 orz ..

但結果是empty()是呼叫remove()來進行清空的,而remove()則是先清理所有選中的物件及其子物件的所有事件和屬性,再使用removechild()刪除自己,而問題就是出現在這裡

經在ie6下測試,removechild()有兩個很重要特性:

第一,他不會刪除dom中的事件

第二,他不會真正刪除(釋放)指定物件中的子物件

而jquery就是犯了第二條, 結果所有子物件都成為了不在dom樹中的「遊離子dom樹」,這時js是無能為力了(因為已經沒有引用位址,例如變數名),即使使用collectgarbage();都不能釋放記憶體

解決方案(偽**):

jquery( 「*」, obj).add([obj]).each(function());

obj.innerhtml = 「」;

上 面**意思是:使用jquery把指定物件及所有子物件的事件和屬性去除,這是由於使用innerhtml和removechild()一樣也不能清除對 象的事件,然後使用innerhtml=」」 來清空內容,使用innerhtml=」能把所有子物件都完全清空,問題解決

關於Jquery記憶體的釋放

專案進入尾聲,又是最恐怖的效能測試 對著js的效能測試我只能做這個表情 經過多次的 檢查和測試,確認已經把自己定的變數什麼的一大堆都已經用null處理,並且沒有明顯的迴圈引用,但結果進行使用者某一動作時,記憶體還是沒被全部 而是線性增加,最後發現,問題都是出現在dom身上 主要是太相信jquery的...

UWSGI關於記憶體釋放問題

bin bash ps ef grep p project pid awk xargs kill 9 ulimit n 20000 usr local env project bin uwsgi s 127.0.0.1 7001 m r 200 p 4 evil reload on as 100 e...

關於堆記憶體和棧記憶體釋放

js 中的記憶體分為堆記憶體和 棧記憶體 堆記憶體 儲存引用型別值 物件 鍵值對 函式 字串 棧記憶體 提供js 執行的環境和儲存基本型別值 堆記憶體釋放 讓所有引用堆記憶體空間位址的變數賦值給null 即可 沒有變數占用這個堆記憶體了 瀏覽器會在空間的時候把它釋放掉 棧記憶體釋放 一般情況下,當函...