PHP 5.3 版本之前都是采用引用计数的方式管理内存，PHP 所有的变量存在一个叫 `zval` 的变量容器中，当变量被引用的时候，引用计数会+1，变量引用计数变为0时，PHP 将在内存中销毁这个变量。

但是引用计数中的循环引用，引用计数不会消减为 0，就会导致内存泄露。

在 5.3 版本之后，做了这些优化：

1. 并不是每次引用计数减少时都进入回收周期，只有根缓冲区满额后在开始垃圾回收；
2. 可以解决循环引用问题；
3. 可以总将内存泄露保持在一个阈值以下。

更多：http://docs.php.net/manual/zh/features.gc.performance-considerations.php

