说一下浏览器如何渲染页面的
- 解析HTML文档:构建DOM树
- 解析CSS样式表:构建CSSOM树
- 构建渲染树:浏览器将DOM树与CSSOM树合并,生成渲染树。渲染树包含了页面所有要显示的元素
- 布局:确定大小,流式布局
- 绘制:按照渲染树的布局信息,绘制元素,重新排列
- 合成:3D变换,叠层的合并
- 页面显示
其中如果用户点击交互,渲染火铳是动态的
说一下重绘、重排区别如何避免
当外观发生变化,即颜色,不会影响布局,就是重绘
当元素的位置、尺寸或字体发生变化,会影响布局,浏览器要重新布局绘制,就是重排
说一下浏览器垃圾回收机制?
主要负责回收不再使用的内存空间,避免内存泄漏
- 标记:从跟对象开始,标记所有从跟对象可达的对象,这些对象被认为是活动的,因为它们正在被使用
- 清除:一旦标记完成,垃圾回收器会清除未被标记的,不用的
- 整理:解决内存碎片化的问题,垃圾回收机可能移动活动对象,将它们紧凑排列在内存的一侧。
- 晋升:如果对象在新生代中经过多次垃圾回收仍然存活,它们会被移动到老生代中。
引用计数是另一种垃圾回收机制,每个对象都有一个引用计数器,当对象不再被引用时,计数器归零,对象就会被回收。但这种方法无法处理循环引用的问题。