前端面试题js:V8引擎机制

2022-05-13  本文已影响0人  林不羁吖

6.V8如何执行一段JS代码

image.png

6.1 为什么用v8执行js代码

编写了js代码想要交给cpu去执行,但是js代码直接放在cpu里面,cpu无法识别,cpu只能识别0101这样的机器语言,所以js代码需要借助v8引擎。

6.2 执行过程

【补充】
有一个问题,比如说保存了高频率函数

function sum(num1,num2){
  return num1+num2
} 
sum(20,20) 
sum(30,30) 
sum('aa','bb').

当优化的机器码发现执行指令不同时(数值相加变成了字符串拼接),会进行一个操作deoptimzation,反优化到字节码后再转化成运行结果。
这样会消耗性能,所以在写代码的时候使用typescript,有一个类型的限制,效率会更高一些

7.介绍一下引用计数和标记清除

引用计数:

标记清除:【广泛采用】

8.V8如何进行垃圾回收【需要学习一下】

JS引擎中对变量的存储主要有两种位置,栈内存和堆内存,栈内存存储基本类型数据以及引用类型数据的内存地址,堆内存储存引用类型的数据

image.png

栈内存的回收:

栈内存调用栈上下文切换后就被回收,比较简单

堆内存的回收:

V8的堆内存分为新生代内存和老生代内存,新生代内存是临时分配的内存,存在时间短,老生代内存存在时间长

image.png

参考资料:聊聊V8引擎的垃圾回收

9. JS相较于C++等语言为什么慢,V8做了哪些优化【需要学习一下】

9.1 JS的问题:

9.2 V8的优化:

参考资料:为什么V8引擎这么快?

作者:写代码像蔡徐抻
链接:https://juejin.cn/post/6844904116552990727
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读