js垃圾回收机制的触发时机
我们总说垃圾回收是自动的,但是具体是什么时候触发的呢?
有两种情况。
一种是执行完一次主线程的代码,就会回收一次。
还有一种极端的情况, 就是当js占用内存过大不够的时候,会触发垃圾回收执行。
前端显示内存占用的api
其实window对象上有显示内存占用的api,只是我们平时没有太关注
在控制台输入window.performance 即可在Performance中的memory看到内存占用情况。
在node环境中,node也提供了查看内存的api:process.memoryUsage()
前端内存优化的建议:
1.尽量不要使用全局变量,如果使用了要注意手动去释放。手动释放就是在不使用以后手动把全局变量赋值为undefined或者null
2、注意闭包的使用,容易造成内存泄漏
总结:
内存分为堆和栈 ,堆内存存储复杂的数据类型,栈内存则存储简单数据类型,方便快速写入和读取数据。在访问数据时,先从栈内寻找相应数据的存储地址,再根据获得的地址,找到堆内该变量真正存储的内容读取出来。
JS 语言并不像比如 C一样需要手动分配内存和释放内存,而是有自己一套动态 GC 策略的。通常的垃圾回收机制有很多种。
前端用到的方式为标记清除法,可以解决循环引用的问题
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.