預解析資源(css/js) =>css
parseHtml: 遇到js中止解析等待js資源放回並執行,js資源放回需等待css資源所有放回纔會執行html
關係: html 與 css相互不阻塞;bash
html 與 js相互阻塞;佈局
js 需等待 css 完成才能執行;性能
不考慮js阻塞時的完整渲染流程:動畫
html=>css=>layout=>layer=>paint=>composite layersui
重排spa
修改了觸發從新佈局的屬性好比 width線程
css => layout => layer => paint => composite layerscode
重繪
修改了只觸發繪製的屬性, 好比color
css => layer => paint => composite layers
css動畫(合成)
css動畫生產了獨立圖層擁有獨立圖層看似修改了佈局,卻不在一個圖層中,全部沒有卻觸發layout,同時越過paint直接進入到合成線程
css => layer => composite layers
v8 分爲新老生代 新生代: 8m左右: 平分兩個區域 老生代: 新生代兩次回收還還存在的進入老生代,佔用內存大的直接進入老生代
新生代 一個區域滿後,查詢stack,查找到還在引用的數據,進入另外一個區域,原來區域中的數據所有清理.因此不會產生碎片空間
老生代 清理時只將失效的清理,因此產生碎片空間,當進入的數據佔用的內存過大,碎片空間中沒有能知足的,就會觸發整理碎片機制
你們都聽過消息隊列,消息隊列裏所有時宏任務
每一個宏任務中還維護這微任務
延遲任務進入延遲任務列表中
消息隊列中的任務所有執行完畢,會去延遲任務中查找全部到期任務,並按照過時時間排序進去消息隊列執行
function callback(){
console.log(1)
}
setTimeout(callback,0)
new Promise((resolve, reject)=>{
console.log(2)
resolve()
console.log(3)
}).then(()=>{
console.log(4)
})
function cons (){
console.log(5)
}
cons()
複製代碼