垃圾回收机制

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

Last updated