Input標簽在Chrome內(nèi)無法正常GC問題

事情的經(jīng)過

前段時間群里的老哥提出了一個疑問

image.png

測試

根據(jù)上述的情況蚓庭,我跟群里老哥做了一個demo來測試問題出在哪

<!DOCTYPE html>
<html>
<body>
  <div id="app">
    <button id="create-input">Create input</button>
    <button id="destroy-input">Destroy input</button>
    <br>
    <button id="create-div">Create div</button>
    <button id="destroy-div">Destroy div</button>
  </div>
  <script>
    const getId = (str) => document.getElementById(str)

    function createTest(elem) {
      const CreateBtn = getId(`create-${elem}`)
      const DestroyBtn = getId(`destroy-${elem}`)

      const onAddClick = () => {
        let input = document.createElement(elem)
        input.id = elem
        // 給dom綁定大量對象
        input._a_ = new Array(1000000).fill('1')
        document.body.appendChild(input)
        input = null
      }
      const onRemoveClick = () => {
        let input = getId(elem)
        if (input) {
          input.parentNode.removeChild(input)
        }
        input = null
      }
      CreateBtn.addEventListener('click', onAddClick)
      DestroyBtn.addEventListener('click', onRemoveClick)
    }
    createTest('div')
    createTest('input')
  </script>
</body>
</html>

創(chuàng)建input/div并手動銷毀的演示墓拜,操作完input后需要刷新頁面重置當前window的內(nèi)存

performance.gif
performance2.gif

測試結(jié)果

根據(jù)上述簡單測試,比對memory和perfomance兩個工具畔柔,能夠得到一些結(jié)論:

  1. 大對象沒有在銷毀DOM元素后直接GC靶擦,而是當下一次有新的大對象創(chuàng)建時(這里是大對象綁定在DOM上)玄捕,才會處理原有大對象的內(nèi)存占用
  2. Div的GC比較徹底枚粘,Input元素幾乎沒有GC掉原來的垃圾

河大點評了一下:

image.png

那位老哥最后發(fā)郵件咨詢了一下chromium團隊:

image.png

總結(jié)

  1. 別隨便往DOM對象上綁定東西孝冒,注意銷毀事件綁定
  2. Input元素對象量承,由于undo/redo的需求拿穴,存在特殊情況
  3. 該重新學一下V8垃圾回收機制了(
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末默色,一起剝皮案震驚了整個濱河市腿宰,隨后出現(xiàn)的幾起案子吃度,更是在濱河造成了極大的恐慌椿每,老刑警劉巖间护,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異均函,居然都是意外死亡,警方通過查閱死者的電腦和手機粘秆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摘符,你說我怎么就攤上這事瘩绒◇案” “怎么了坤溃?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵越驻,是天一觀的道長缀旁。 經(jīng)常有香客問我并巍,道長军拟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任辫继,我火速辦了婚禮遣耍,結(jié)果婚禮上配阵,老公的妹妹穿的比我還像新娘棋傍。我一直安慰自己瘫拣,他們只是感情好派昧,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布淮椰。 她就那樣靜靜地躺著主穗,像睡著了一般争拐。 火紅的嫁衣襯著肌膚如雪金赦。 梳的紋絲不亂的頭發(fā)上绳慎,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天珊楼,我揣著相機與錄音画舌,去河邊找鬼。 笑死,一個胖子當著我的面吹牛旭咽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼亚兄,長吁一口氣:“原來是場噩夢啊……” “哼膳叨!你這毒婦竟也來了菲嘴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妓局,失蹤者是張志新(化名)和其女友劉穎局雄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡驼侠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昔馋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出审丘,到底是詐尸還是另有隱情,我是刑警寧澤售睹,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布飞崖,位于F島的核電站胯努,受9級特大地震影響蒲讯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一独郎、第九天 我趴在偏房一處隱蔽的房頂上張望贫橙。 院中可真熱鬧疲迂,春花似錦郑气、人聲如沸示弓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愧驱。三九已至吻商,卻和暖如春艾帐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捎稚。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工匾南, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛆楞,地道東北人矛纹。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓肄方,卻偏偏與公主長得像权她,于是被迫代替她去往敵國和親董济。 傳聞我的和親對象是個殘疾皇子暂衡,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355