2008
12-12
12-12
PHP对变量的跟踪,其实是采用引用,比如 $a = “test” 那么就是在内存中开辟一个存储区,保存 test,$a 做为test的引用。
同时我们可以 $b = &$a,$b作为 $a的引用,他们同时指向test存储空间。
在文章 http://www.sunboyu.cn/2008/11/19/php%E4%B8%AD%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8%E8%AF%A6%E8%A7%A3.shtml 中,我们做了一个应用的测试,当删除一个引用后,变量并不消失,是因为PHP使用一个引用计数的东东。当$a=”test”建立后,test的引用计数就是1,建立 $b=&$a后,test的引用计数就是2,删除任何一个引用后,引用计数为1.
只要是引用计数不为0的数据,则为当前有效的数据。然而,当数据的引用计数为0的时候,系统就会识别此数据为垃圾数据,需要回收,这也就形成了PHP的垃圾回收机制。