首先针对于引用技术算法来说,它的核心思想其实就是在内部去通过一个引用计数器来维护当前对象的引用数,从而去判断该对象的引用数值是否为 0,来决定它是不是一个垃圾对象。当这个数值为零的时候,那么 GC 就开始工作,将其所在的一个对象空间进行回收和释放在使用。
在这里提到了一个名词叫引用计数器。关于它我们需要有一个小小的印象。因为相对于其他的一些 GC 算法来说,也正是由于引用计数器的存在,那么导致了引用计算在执行效率上,可能与其他的机器算法有所差别。
这个介绍以后,我们还需要去再思考一下,我们引用的这样一个数值什么时候会发生改变呢?所以在这里它给出的一个规则是这样的,当某一个对象它的一个引用关系去发生改变的时候,那么引用计数器就会主动的去修改当前这个对象所对应的引用数值。
那什么叫做引用关系发生改变呢?例如我们的代码里面,现在有一个对象空间。目前来说有一个变量名指向它,那么这个时候就把数值加 1。如果在这个时候又多了一个对象还指向它,那么就把它再加 1。那么如果是减少的情况下,就减 1 就行了。
当我们发现这样的一个引用数字为 0 的时候,那么 GC 就会立即工作,然后将当前的对象空间进行回收。
那么介绍这样的一块原理之后,我们再通过一些简单的代码来说明一下这个引用关系发生改变的一种情况。
通过编写一些简单的代码片段,来看一下当前代码中针对于对象引用技术发生改变的一些现象。
使用 const 关键字定义几个简单的变量,设置一下,把它作为一个普通的对象,采用的是数值写起来比较方便。
const user1