通过两个面试题解析JS底层原理

本文通过面试题解析JavaScript的执行机制,包括微任务和宏任务的执行顺序。同时,探讨了JavaScript内存回收的过程,如何查看内存,以及哪些不当操作可能导致内存问题。文章提到了滥用全局变量、无限缓存和处理大文件等问题,给出了解决建议和优化策略,重点讨论了新生代和老生代的内存管理算法。
摘要由CSDN通过智能技术生成

先来看一个例子:

setTimeOut(()=>{
	console.log('set1');
});
new Promise((resolve,reject)=>{
	console.log('p1')
  resolve();
}).then(()=>{
	console.log('then1');
})
console.log('1');

问:执行顺序?
答案:p1 --> 1 --> then1 --> set1 ;
new Promise() 的时候是同步执行。

微任务:

Promise, process.nextTick

宏任务:

整体的Scirpt代码,setTimeOut , setInterval

看看如下例子

image.png

答案:pr1 —> 2 —> then1 —> set1 —>then2 —> then 4 —> set2

解析过程:

确保微任务执行完了才去执行宏任务。

一 、js执行机制

image.png

另一个例子:
问:下面的代码执行会出现什么样的结果?

var b = [];
for(var i=0;i<15;i++){
	b.push(new Array(20*1024*1024));
}

结果,js内存不够了,V8引擎的内存溢出,崩溃了。

image.png

so,V8引擎内存有多大?

image.png

image.png

疑问:为什么64位的系统就只设置1.4G?设计的这么小?

原因:js回收的时候会中断执行。js回收100MB内存,则需要3ms。所以不能设计太大,因为会整个中断掉。

疑问:为什么1.4GB 是比较合适的?

原因&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值