JS V8引擎简要认知(内存模型,栈堆空间,深浅拷贝,垃圾回收机制,闭包内存泄漏)面试问答

JS V8引擎工作原理简介

首选了解JS的内存模型

js执行过程中,主要有三种类型内存空间:代码空间,栈空间,堆空间

  • 代码空间:主要存储可执行的代码
  • 栈空间:就是调用栈,用来存储执行上下文的。栈空间一般不大,主要存基本类型数据和引用类型的指针。
  • 堆空间:引用类型的值存在堆中,通过栈空间的引用地址来访问堆空间的数据。其特点是空间大,存放多,缺点是分配内存和回收内存会占用一定的时间
为什么要分栈堆空间?
所有数据不能都放在栈空间里,因为js引擎需要栈来维护程序执行的上下文的状态,如果所有数据都存在栈空间里,栈空间大,数据量大,会导致寻找上下文慢,上下文切换效率变低,进而影响整个程序的效率。
JS v8引擎的垃圾回收机制简介
垃圾回收策略分为手动回收,自动回收。
手动回收:针对c/c++语言的
自动回收:js,java,python等都是自动回收,原则上不需要手动释放。
JS中常见的垃圾回收方式
  • 标记清除
    原理:变量进入执行程序环境,则标记为‘进入环境’,变量离开环境则标记为‘离开’,‘离开’标记的就会被回收或被新变量替代。进出过程由当前执行状态的指针ESP指向函数上下文,下移到下一个函数上下文的过程中进行销毁或被替代。
    特点:标记清除主要用来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值