JS中GC是自動(dòng)完成的,但這并不意味著我們可以完全不關(guān)注GC了。當(dāng)GC事件發(fā)生時(shí),JS主線程會(huì)被暫停直到GC完成。如果隨意聲明變量,那么頻繁的GC事件可能會(huì)讓整個(gè)頁(yè)面出現(xiàn)“抖動(dòng)”。
可以通過(guò)chrome devtool的Timeline來(lái)觀察GC:
設(shè)置
- View選擇Flame chart view
- Capture只勾選Memory
捕捉
設(shè)置完成后,點(diǎn)擊最左邊的Record按鈕,然后就可以訪問(wèn)網(wǎng)頁(yè)了。
查看
當(dāng)網(wǎng)頁(yè)加載完成后,點(diǎn)擊Stop,等待分析結(jié)果。然后在chart view上尋找內(nèi)存急速下降的部分:
GC
可以點(diǎn)擊這部分圖示以得到詳細(xì)的信息,這里我們主要關(guān)注GC,所以找到GC事件,點(diǎn)擊查看詳情:
GC event
可以看到,該GC事件耗時(shí)3.93ms。