PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放,这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)
PHP使用的回收算法是引用计数法,每个php变量存在一个叫”zval”的变量容器。
一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是”is_ref”,是个bool值,用来标识这个变量是否是属于引用集合(reference set)。
第二个额外字节是”refcount”,用以表示指向这个zval变量容器的变量(也称符号即symbol)个数。
把一个变量赋值给另一变量将增加引用次数(refcount)
当任何关联到某个变量容器的变量离开它的作用域(比如:函数执行结束),或者对变量调用了函数 unset()时,”refcount”就会减1
变量容器在”refcount”变成0时就被销毁