欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
介绍一些Javascript的基础重点知识,包括并不限于函数作用域与提前声明和对象的构造函数等问题。
1. 什么是垃圾回收机制?
- 就像人生活的时间长了会产生垃圾一样,程序运行过程中也会产生垃圾
这些垃圾积攒过多以后,会导致程序运行的速度过慢,
所以我们需要一个垃圾回收的机制,来处理程序运行过程中产生垃圾 - 当一个对象没有任何的变量或属性对它进行引用,此时我们将永远无法操作该对象,
比如我们 var mzh=new Object();生成了一个对象mzh,指向内存中的存放位置。
然后我们 mzh=null;使得mzh中指向内存区域的引用设置为null,导致我们无法再操作内存中的存放位置,也即没有任何指向该区域的引用,此时这块内存区域就是我们所说的垃圾。
-
正常使用内存空间时
-
变成了内存空间垃圾后
<script type="text/javascript">
function Student() {}
var mzh = new Student(); //新建对象指定引用内存空间
mzh=1;//此时mzh随便指向其他,那么0x123就是垃圾了
</script>
2. 我们如何进行垃圾回收?
- 此时这种对象就是一个垃圾,这种对象过多会占用大量的内存空间,导致程序运行变慢,
所以这种垃圾必须进行清理。 - 在JS中拥有自动的垃圾回收机制,会自动将这些垃圾对象从内存中销毁,
我们不需要也不能进行垃圾回收的操作 - 我们需要做的只是要将不再使用的对象设置null即可
<script type="text/javascript">
function Student() {}
var mzh = new Student(); //新建对象指定引用内存空间
mzh = null; //垃圾回收,清除垃圾内存
</script>
3. 常见的垃圾回收机制算法——GC算法
如果要详细讲解比较复杂,本文就简单说说GC算法。
引用计数法(reference count):有一个引用指向一个对象,计数就加1 ,直到这个数为0,就会被当作垃圾进行回收。
具体过程:
- 遍历所有的对象找活动对象做标记
- 遍历所有的对象清除没有标记的对象和把上一步标记的对象标记清除(为了下一轮的标记做准备)
- 对于第一步和第二步中从来没有打上过标记的垃圾对象进行垃圾回收
- 局限:无法解决循环引用。
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2023 mzh
Crated:2023-3-1
欢迎关注 『Javascript基础重点』 专栏,持续更新中
欢迎关注 『Javascript基础重点』 专栏,持续更新中
『1.提前声明问题,你苦恼写了js函数代码但是不会生效的问题吗?』
『2.易错点之函数形参与函数作用域的坑』
『3.了解原型对象优雅地构造函数の“JS中的Java继承” 提高运行效率,优雅地使用对象』
『4.JS垃圾回收机制简析』
『5.以toString()为例学习JS中的java方法重写』
『6.数组的常用方法与数组遍历』
『7.函数进阶之call()和apply()与arguments』
『8.Date类与利用时间戳来测试代码的执行的性能』
『9.Math类方法』
『10.包装类』
『11.字符串的方法』
『12.正则表达式介绍 邮件正则表达式写法』
『13.dom的应用』
『未完待续』