js module

作者: 大乔是个美少女 | 来源:发表于2020-12-22 11:10 被阅读0次

今天和大家讨论全局变量的问题,感觉js还是很多不同。

1.node里一个文件是一个模块(module)
2.一个模块相当于一个函数作用域
3.exports的对象相当于module.export的一个引用

js GC 标记清除+引用计数

引用计数
在新建引用的时候就声明,哪些引用必须手动清除,哪些引用可以忽略不计,当其他引用消失以后,垃圾回收机制就可以释放内存。这样就能大大减轻程序员的负担,你只要清除主要引用就可以了。

一个模块里的const变量,也相当于这个模块的局部变量,
所以这个module被销毁的时候,也会触发GC

node引擎中的每个js文件都属于module类
node引擎中每个js文件都会被解析为Module对象加载到栈内存中
node引擎中所有框架,包括小程序,最终都会被编译为js文件
node引擎中所有js文件被编译后才逐一被创建为module对象并加载到栈内存中

垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记。
然后,它会去掉运行环境中的变量以及被环境中变量所引用的变量的标记。
此后,依然有标记的变量就被视为准备删除的变量,原因是在运行环境中已经无法访问到这些变量了。
最后,垃圾收集器完成内存清除工作,销毁那些带标记的值并回收它们所占用的内存空间。

image.png

相关文章

网友评论

      本文标题:js module

      本文链接:https://www.haomeiwen.com/subject/ntajnktx.html