在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ GC是如何回收DOM對象的?

GC是如何回收DOM對象的?

問題描述:
代碼如下:

        (function(){
            var btn = document.querySelector("#btn")
            btn.bigString = new Array(1000).join(new Array(2000).join("XXXXX"));
            btn = null
        })()

當我在自執(zhí)行函數(shù)中往btn中添加了一個自定義屬性,然后在末尾都已經(jīng)置btn為null.按理說我這個大字符串btn.bigString會隨著btn一起被回收,為什么我在profile中看到的卻不是這樣子的?btn這個DOM對象完全沒有被回收,大字符串也還在。

clipboard.png

當我將btn 替換成普通對象的時候,卻又是正常的,這個bigString 是被回收掉的。

        (function(){
            //var btn = document.querySelector("#btn")
            var btn = {}
            btn.bigString = new Array(1000).join(new Array(2000).join("XXXXX"));
            btn = null
        })()

profile:

clipboard.png

是我對于DOM對象 和js對象理解有誤嗎?我應該如何釋放上面的DOM對象和bigString?

瀏覽器版本:

clipboard.png

回答
編輯回答
假灑脫

DOM元素是被頁面所使用的,頁面不被卸載(unload),DOM元素是不會被回收的。所以,btn=null只能讓btn這個變量不再引用id='btn'的DOM元素,但頁面依然在使用這個元素,當然是不會回收這個元素對應的對象的。

2017年10月6日 15:22