Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript的垃圾回收机制-总结 #10

Open
law-chain-hot opened this issue Mar 3, 2020 · 0 comments
Open

JavaScript的垃圾回收机制-总结 #10

law-chain-hot opened this issue Mar 3, 2020 · 0 comments
Labels

Comments

@law-chain-hot
Copy link
Owner

law-chain-hot commented Mar 3, 2020

JavaScript的垃圾回收机制总结

image
结合了几个大佬的博客以及MDN,我自己再简短总结下

1. 什么是垃圾回收(Garbage Collecation)

什么是垃圾回收(GC:Garbage Collecation):垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存

并且在js中字符串、对象和数组的大小是动态分配的,如果一直不释放,系统会{爆掉}的

2. 垃圾回收的方式(2种)

JavaScript的垃圾回收机制有2种:标记清除 + 引用计数

目前大多数浏览器(除了IE7,IE8之类的),都是用的 标记清除 (不过话说,现在真的还有人在用IE吗,我不知道)

  • 标记清除 的原则是:这个变量无法被访问了
  • 引用计数 的原则是:这个变量被不再需要了 (此方法,有循环引用的问题,解决手段是:手动解除 variable = null

3. JavaScript内存优化

原理谈完,作为小白工程师,我们的最终目的当然是优化(虽然也想成为设计一门语言的大佬),那我先码住优化的方法

  1. 谨慎使用全局变量 用IIFE
    • 意外创建:比如非use strict模式下,function里面用了this
  2. 及时手动解除引用 用完就删
  3. 减少对象创立
  4. 避免复杂的递归调用 可用尾递归(不过可读性会减低一点点)
  5. 待续

⬅ 返回我的Blog

@law-chain-hot law-chain-hot changed the title JavaScript的垃圾回收机制总结 JavaScript的垃圾回收机制-总结 Mar 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant