一、php变量容器计算机制
1、php把每个变量都存在一个叫"zval"的变量容器中。zval变量容器,不仅包含变量的类型和值,还两个字节的额外信息"is_ref"和"refcount"。
“is_ref”,是个bool值,用来标识这个变量是否是属于引用集合(reference set)。
“refcount”,用以表示指向这个zval变量容器的变量(也称符号即symbol)个数。
2、“refcount"的计数规则,定义变量是"refcount” 默认为1,当变量被赋值给另一个变量时"refcount" 加1。当使用unset()删除变量时"refcount" 减1,当任何关联到某个变量容器的变量离开它的作用域(比如:函数执行结束)“refcount” 减1。
3、变量容器在”refcount“变成0时就被销毁。
二、打开和关闭垃圾回收机制
1、可以在php.ini中的zend.enable_gc开启垃圾回收机制,也能通过分别调用gc_enable() 和 gc_disable()函数来打开和关闭垃圾回收机制